我一直在尝试在引导表格上验证沙特阿拉伯的电话号码,但是我一直收到无效错误消息。
这是我目前正在使用的正则表达式。
/^(009665|9665|\+9665|05|5)(5|0|3|6|4|9|1|8|7)([0-9]{7})$/
function validateContact(thisObj) {
let fieldValue = thisObj.val();
let pattern = /^(009665|9665|\+9665|05|5)(5|0|3|6|4|9|1|8|7)([0-9]{7})$/;
if (pattern.test(fieldValue)) {
$(thisObj).addClass('is-valid');
} else {
$(thisObj).addClass('is-invalid');
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script>
<form class="needs-validation" method="POST" action="" onsubmit="validate()">
<div>
<label for="contact_no1">Contact Number</label>
<input id="contact_no1" name="contact_no1" type="tel" class="form-control" id="contact_no1" placeholder="" value="" required>
<div class="invalid-feedback">
Please enter a valid contact number.
</div>
</div>
</form>
答案 0 :(得分:2)
此模式易于匹配数字:
^((?:[+?0?0?966]+)(?:\s?\d{2})(?:\s?\d{7}))$
答案 1 :(得分:0)
使用RegExp类将非常容易。这里是一个例子:
var regex = new RegExp(/^(009665|9665|\+9665|05|5)(5|0|3|6|4|9|1|8|7)([0-9]{7})$/);
regex.test('0501234567'); // return true;
regex.test('0521234567'); // return false;
答案 2 :(得分:0)
我使用以下模式:
(?:\+?0*?966)?0?5[0-9]{8}
鉴于没有空格,它将匹配以下数字:
966512345678
+966512345678
00966512345678
512345678
0512345678
如果需要对数字进行归一化,请使用以下模式捕获数字512345678
:
(?:\+?0*?966)?0?(5[0-9]{8})
,然后您可以在其中添加0
或966
到捕获的号码。