5

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

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

例子,

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

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

4

2 回答 2

3

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

ng-pattern="/(?![*|\":<>[\]{}`()';@&$])/"
于 2016-01-04T12:38:21.463 回答
1

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

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

演示

在 AngularJS 中,如果传递了 RegExp 对象(带有分隔符的对象),则模式不必匹配整个字符串,因此该正则表达式非常适合当前目的(只需检查条件是真还是假)。

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

\x22此外,使用匹配值中的双引号也很方便ng-pattern

于 2016-01-04T14:32:42.823 回答