使用此正则表达式的FormControl() Validators.pattern()遇到问题,用于验证密码,密码为1个字符,1个数字,最少8个字符,最多16个字符。
经过验证的经过验证的密码:
asdfqwer //不应通过验证器
zxcvasdf //不应通过验证器
asdfqwer2 //正确
未通过验证程序的经过测试的密码:
程序// //正确
在服务器端尝试此模式或使用在线正则表达式测试平台都没有问题
// some code
password: new FormControl('',
[
Validators.minLength(8),
Validators.maxLength(16),
Validators.pattern('^$|^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,16}$')
]),
// some code
您可以使用
Validators.pattern('(?:(?=[^A-Za-z]*[A-Za-z])(?=\\D*\\d)[A-Za-z\\d]{8,16})?')
Angular将使用^
和$
自动将字符串模式括起来,使其成为'^(?:(?=[^A-Za-z]*[A-Za-z])(?=\\D*\\d)[A-Za-z\\d]{8,16})?$'
。
请注意双反斜杠:在字符串文字中,必须用另一个反斜杠对反斜杠进行转义,以定义文字反斜杠,即正则表达式转义字符。
由于整个模式都包含有一个可选的非捕获组,因此,空字符串也将与该模式匹配。
在(?=[^A-Za-z]*[A-Za-z])
和(?=\\D*\\d)
现在没有.*
,这与该行的对比原则。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句