Как я могу заставить мою функцию регулярного выражения / ^ \ 966 [\ d] {9} $ / или jquery работать на iPad? - PullRequest
0 голосов
/ 22 февраля 2019

Используя jQuery, я проверяю поле с регулярным выражением /^\966[\d]{9}$/, которое допускает только цифры, 9-значный предел с префиксом 966.Он отлично работает на Windows, Android и iPhone.Однако, когда я тестирую его на iPad, он не работает.

Я искал, но не смог найти решение.

var regexMobileEnquiry = /^\966[\d]{9}$/

ValidateRegex($("#lblReporterMobile"), $("#txtReporterMobile"), regexMobileEnquiry)

function ValidateRegex(lbl, txt, regex) {
  var re = regex;
  if (!txt.val().trim().match(re)) {
    lbl.addClass("error");
    return false;
  } else {
    lbl.removeClass("error");
    return true;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label id="lblReporterMobile" class="control-label">Reporter Mobile </label>
<input name="txtReporterMobile" type="text" id="txtReporterMobile" class="form-control" autocomplete="off" maxlength="15">

1 Ответ

0 голосов
/ 22 февраля 2019

Используемое регулярное выражение содержит \9, что можно интерпретировать как обратную ссылку на девятую группу захвата.Большинство реализаций JS RegExp могут справиться с этой ситуацией, но кажется, что это не так в iPad.

Я предлагаю "нормализовать" шаблон как

/^966\d{9}$/

Это означает

  • Удалите \ перед 9, чтобы устранить любую неоднозначность, связанную с шаблонами экранированных чисел
  • Превратите [\d] в \d, так как нет смысла создавать класс символов изодин класс сокращенных символов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...