为什么正则表达式的行为与Angular Form Validator中的字符串不同

时间:2018-12-09 09:00:02

标签: angular

该表单控件的验证器根据声明的行为不同(即使方法接口可以接受RegExp或字符串)。例如,当我在输入中粘贴用户名然后粘贴空格时,与第二个示例不同,该模式的第一个示例无法验证错误。

Regex String regex

2 个答案:

答案 0 :(得分:2)

不幸的是,没有记录,但是当您传递字符串时,Angular在开头(如果尚不存在)添加^,在结尾(如果尚不存在)添加$。如果您传递了Regexp,它将按原样使用它。

请参见source code

答案 1 :(得分:0)

我认为文档中应包含一个示例,其中将正则表达式作为模式进行传递。

以下电子邮件模式失败...

Validators.pattern('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$')

然而,通过正则表达式的工作符合预期...

Validators.pattern(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/)