使用此代码段,我试图确保文本字段不以$ scope.pointPattern
中的任何字母结尾$scope.pointPattern = /^(?!.*ess|ence|sports|riding?$)/;
$scope.error = "not valid";
在运行代码时,仅当该字段以 ess 结尾时,才会显示该错误,但其他字母从未被列入黑名单
e.g
football ess > shows error not valid
footbal ence > does not show error and likewise on sports and riding
我在做什么错
答案 0 :(得分:1)
您的^(?!.*ess|ence|sports|riding?$)
正则表达式匹配的字符串不以ess
结尾并且不以ence
,sports
开头并且不以{{1}结尾}和riding
。参见your regex demo。之所以会发生这种情况,是因为这些备选方案未进行分组和仅ridin
您需要对这些备选方案进行分组。
使用
$
$scope.pointPattern = /^(?!.*(?:ess|ence|sports|riding?)$)/;
^^^ ^ ^ ^ ^
和最后一个(?!
定义了负数lookahead的边界,而)
是一个non-capturing group,它与其中列出的任何替代项匹配它以(?:ess|ence|sports|riding?)
(alternation operator)分隔。