使用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
,因为从单个速记字符类中创建字符类是没有意义的。