我正在使用FormControl类来验证Angular中的文本输入。我正在尝试根据正则表达式模式进行验证,但无法正常工作。
我希望输入内容至少包含此列表中的一个特殊字符:
^ $ *。 [] {}()? -“!@#%&/ \,> <':; | _〜`
这是我的尝试:
passwordFormControl = new FormControl('', [
Validators.required,
Validators.minLength(8),
Validators.pattern('[\^$*.[\]{}()?\-"!@#%&\/\\,><\':;|_~`]+')
]);
我也尝试过转义每个字符,但这并没有改变结果。
('[\^\$\*\.\[\]\{\}\(\)\?\-\"\!\@\#\%\&\/\\\,\>\<\'\:\;\|\_\~\`]+')
即使在输入中添加了特殊字符,验证器仍会返回错误。
这里是StackBlitz
答案 0 :(得分:-1)
解决了。就像@Brandon提到的那样,正则表达式在Angular中表现得很奇怪。为了使其正常工作,我必须不断重新排列字符,直到最终它们全部匹配为止。我同意@Brandon的观点,使用RegExp当然是个好办法。
这是有效的表达方式
Validators.pattern('.*[\-"!@#%&\/\\\\,\\]><\':;|_~`\^&+$*.\{\}\(\)\[].*')