ng模式不应与提供的模式匹配

ng-pattern should not match supplied pattern

本文关键字:模式匹配 模式 ng      更新时间:2023-09-26

ng-pattern中,我们可以选择指定字段应与特定模式匹配。

我们如何指定它不应该与指定的模式匹配?

示例,

<input type="text" ng-pattern="/[*|'":<>[']{}`()';@&$]/" />

在这里,我不希望字段与模式匹配。相反,如果模式匹配,我想显示错误。

您可以使用负环视((?!pattern))来否定正则表达式:

ng-pattern="/(?![*|'":<>[']{}`()';@&$])/"

为了检查字符串是否没有子字符串,可以使用字符串开始锚定前瞻:

/^(?!.*[*|'x22:<>[']{}`()';@&$])/

参见演示

在AngularJS中,如果传递RegExp对象(带有分隔符的对象),则模式不必与整个字符串匹配,因此此regex非常适合当前用途(只需检查条件是true还是false)。

请注意,也可以使用常用的调和贪婪令牌解决方案^(?:(?![*|'x22:<>'[']{}`()';@&$]).)*$(请参阅演示),但由于输入字符串中的每个位置都被检查,因此效率较低。

此外,使用'x22可以方便地匹配ng-pattern值中的双引号。