ng-pattern以确保文本字段字母不以特定单词结尾

时间:2018-10-02 15:34:14

标签: javascript angularjs regex

使用此代码段,我试图确保文本字段不以$ 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

我在做什么错

1 个答案:

答案 0 :(得分:1)

您的^(?!.*ess|ence|sports|riding?$)正则表达式匹配的字符串不以ess结尾并且不以encesports开头并且不以{{1}结尾}和riding。参见your regex demo。之所以会发生这种情况,是因为这些备选方案未进行分组和仅ridin

您需要对这些备选方案进行分组。

使用

$

$scope.pointPattern = /^(?!.*(?:ess|ence|sports|riding?)$)/; ^^^ ^ ^ ^ ^ 和最后一个(?!定义了负数lookahead的边界,而)是一个non-capturing group,它与其中列出的任何替代项匹配它以(?:ess|ence|sports|riding?)alternation operator)分隔。