ng-pattern, чтобы гарантировать, что буква текстового поля не заканчивается конкретным словом - PullRequest
0 голосов
/ 02 октября 2018

с помощью этого фрагмента кода. Я пытаюсь убедиться, что текстовое поле не заканчивается ни одной из букв контура в $ 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 голосов
/ 02 октября 2018

Ваше регулярное выражение ^(?!.*ess|ence|sports|riding?$) соответствует строке, которая не заканчивается на ess и которая не начинается на ence, sports и не заканчивается на riding и ridin.Смотрите вашу демонстрационную версию регулярного выражения .Это происходит потому, что альтернативы не сгруппированы и $ only

Вам необходимо сгруппировать эти альтернативы.

Использовать

$scope.pointPattern = /^(?!.*(?:ess|ence|sports|riding?)$)/;
                             ^^^   ^    ^      ^       ^

(?! и последние ) определяют границы негатива lookahead , а (?:ess|ence|sports|riding?) является группой без захвата , которая соответствует любой изальтернативы, перечисленные в нем, ограничены | ( оператор чередования ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...