ng-pattern 不应匹配提供的模式
ng-pattern should not match supplied pattern
在 ng-pattern
中,我们可以选择指定字段应匹配特定模式。
我们如何指定它不应匹配指定的模式?
示例,
<input type="text" ng-pattern="/[*|\":<>[\]{}`()';@&$]/" />
在这里,我不希望字段与模式匹配。相反,如果模式匹配,我想显示错误。
您可以使用否定环视 ((?!pattern)
) 来否定您的正则表达式:
ng-pattern="/(?![*|\":<>[\]{}`()';@&$])/"
为了检查字符串是否没有子字符串,您可以使用 string-start-anchored 前瞻:
/^(?!.*[*|\x22:<>[\]{}`()';@&$])/
见demo
在AngularJS中,如果传递了 RegExp 对象(带分隔符的对象),则模式不必匹配整个字符串,因此这个正则表达式很适合当前的目的(只需检查条件是否为对或错)。
请注意,也可以使用常用的 tempered greedy token 解决方案 ^(?:(?![*|\x22:<>\[\]{}`()';@&$]).)*$
(参见 demo),但效率较低,因为要检查输入字符串中的每个位置。
另外,在ng-pattern
值中使用\x22
匹配双引号很方便。
在 ng-pattern
中,我们可以选择指定字段应匹配特定模式。
我们如何指定它不应匹配指定的模式?
示例,
<input type="text" ng-pattern="/[*|\":<>[\]{}`()';@&$]/" />
在这里,我不希望字段与模式匹配。相反,如果模式匹配,我想显示错误。
您可以使用否定环视 ((?!pattern)
) 来否定您的正则表达式:
ng-pattern="/(?![*|\":<>[\]{}`()';@&$])/"
为了检查字符串是否没有子字符串,您可以使用 string-start-anchored 前瞻:
/^(?!.*[*|\x22:<>[\]{}`()';@&$])/
见demo
在AngularJS中,如果传递了 RegExp 对象(带分隔符的对象),则模式不必匹配整个字符串,因此这个正则表达式很适合当前的目的(只需检查条件是否为对或错)。
请注意,也可以使用常用的 tempered greedy token 解决方案 ^(?:(?![*|\x22:<>\[\]{}`()';@&$]).)*$
(参见 demo),但效率较低,因为要检查输入字符串中的每个位置。
另外,在ng-pattern
值中使用\x22
匹配双引号很方便。