使用jQuery,我正在验证使用正则表达式/^\966[\d]{9}$/的字段,该字段仅允许数字,带966前缀的9位数字限制。它也可以在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">

最佳答案

您使用的正则表达式包含\9,可以将其解释为第九个捕获组的反向引用。大多数JS RegExp实现都可以处理这种情况,但iPad似乎并非如此。

我建议将模式“规范化”为

/^966\d{9}$/


它的意思是


\之前删除9以删除与转义数字模式有关的任何歧义
[\d]变为\d,因为从单个速记字符类中创建字符类是没有意义的。

10-08 02:31