使用正则表达式进行角度验证FormControl

时间:2019-02-01 20:06:30

标签: regex angular typescript

我正在使用FormControl类来验证Angular中的文本输入。我正在尝试根据正则表达式模式进行验证,但无法正常工作。

我希望输入内容至少包含此列表中的一个特殊字符:

^ $ *。 [] {}()? -“!@#%&/ \,> <':; | _〜`

这是我的尝试:

passwordFormControl = new FormControl('', [
    Validators.required,
    Validators.minLength(8),
    Validators.pattern('[\^$*.[\]{}()?\-"!@#%&\/\\,><\':;|_~`]+')
]);

我也尝试过转义每个字符,但这并没有改变结果。

('[\^\$\*\.\[\]\{\}\(\)\?\-\"\!\@\#\%\&\/\\\,\>\<\'\:\;\|\_\~\`]+')

即使在输入中添加了特殊字符,验证器仍会返回错误。

这里是StackBlitz

1 个答案:

答案 0 :(得分:-1)

解决了。就像@Brandon提到的那样,正则表达式在Angular中表现得很奇怪。为了使其正常工作,我必须不断重新排列字符,直到最终它们全部匹配为止。我同意@Brandon的观点,使用RegExp当然是个好办法。

这是有效的表达方式

Validators.pattern('.*[\-"!@#%&\/\\\\,\\]><\':;|_~`\^&+$*.\{\}\(\)\[].*')