使用此代码段,我试图确保文本字段不以$ 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
我究竟做错了什么
最佳答案
您的^(?!.*ess|ence|sports|riding?$)
正则表达式匹配的字符串不以ess
结尾,也不以ence
,sports
开头,并且不以riding
和ridin
结尾。请参见your regex demo。发生这种情况是因为未对备选方案进行分组并且仅$
您需要对这些备选方案进行分组。
采用
$scope.pointPattern = /^(?!.*(?:ess|ence|sports|riding?)$)/;
^^^ ^ ^ ^ ^
(?!
和最后一个)
定义了负数lookahead的边界,并且(?:ess|ence|sports|riding?)
是non-capturing group,与其中列出的以|
(alternation operator)分隔的任何替代项匹配。