ng-шаблон для проверки последней буквы должен заканчиваться конкретной буквой angularjs - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь убедиться, что последняя буква поля должна заканчиваться конкретной буквой в текстовом поле angularjs.Я создал функцию, которая обрабатывает проверку шаблона, как показано

$scope.validatePattern = function () {
    var typeSelected = $scope.sports_type;
    if (typeSelected == 'Sports') { //the user selected sports from the above model
        $scope.pointPattern = "^[\s\w]+[^(ess|essence)]$";
    }
}

Я использую шаблон в полях ниже.

<label>Sports Option</label>
<input ng-model="option" ng-minlength="3" formcontrol name="option" type="text" ng-pattern="{{pointPattern}}" required>
<p ng-show="frmValidation.option.$invalid" class="input-error-message">Option is required</p>
<p ng-show="frmValidation.option.$error.pattern">Not valid! Must end with ess or essence</p>

почему шаблон ng не проверяет, что буквадолжен заканчиваться ESS или сущностью

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Для сопоставления строк, заканчивающихся ess, essence или sports, вы можете использовать

$scope.pointPattern = /(?:ess(?:ence)?|sports)$/;

Обратите внимание, что вы должны использовать тип переменной RegExp.Он равен $scope.pointPattern = new RegExp("(?:ess(?:ence)?|sports)$"); и требуется, если вы планируете сопоставить подстроку во входной строке.

Если вы планируете использовать строковый шаблон, вам необходимо убедиться, что он соответствует всей входной строке:

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

Детали шаблона

  • ^ - начало строки
  • .* - любые 0+ символов, кромесимволы разрыва строки
  • (?:ess(?:ence)?|sports) - группа без захвата соответствие
    • ess(?:ence)? - ess с последующей необязательной подстрокой ence
    • | - или
    • sports - подстрока sports
  • $ - конец строки.
0 голосов
/ 02 октября 2018

Ваша проблема в том, что [^(ess|essence)] - это класс символов с отрицанием, который будет соответствовать одному символу, который не принадлежит ни одному из (, e, s, |, n, c или), также вы смотрите на конец строки, так чтоВы можете оставить часть ^[\s\w]+.

Я предполагаю, что регулярное выражение соответствует допустимому вводу, поэтому вам нужно переписать его как

$scope.pointPattern = "ess(?:ence)?$";

Это соответствует ess, за которым может следовать ence с последующим концом строки,

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