我正在努力在正则表达式中创建一个If / Else语句来a)验证电话号码格式,然后b)使一组电话号码无效。
我目前有:
<input type="tel" name="mobilePhone" pattern="^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$">
作为定位以下电话号码格式的方式(澳大利亚的手机号码):
0414570776
0414 570 776
但是我们有很多0411 111 111
或0400000000
个用户条目,我想在提交之前尝试清洗,但我似乎无法做到正确。
我想使一系列数字无效,但对于这个例子,这两个就足够了:0411 111 111
或0400000000
。
非常感谢任何帮助。
谢谢
答案 0 :(得分:0)
var re = /^\s*\+?04(\d)(?!\1\s*\1{3}\s*\1{3})\d\s*\d{3}\s*\d{3}\s*$/;
console.log(re.test('0411111111') ? 'pass' : 'fail', '"0411111111"');
console.log(re.test('0411 111 111') ? 'pass' : 'fail', '"0411 111 111"');
console.log(re.test('0400 000 000') ? 'pass' : 'fail', '"0400 000 000"');
console.log(re.test('0412345678') ? 'pass' : 'fail', '"0412345678"');
console.log(re.test('0412 345 678') ? 'pass' : 'fail', '0412 345 678');
console.log(re.test('+0412345678') ? 'pass' : 'fail', '"+0412345678"');
console.log(re.test('+0412 345 678') ? 'pass' : 'fail', '"+0412 345 678"');
console.log(re.test('0412 345 678') ? 'pass' : 'fail', '"0412 345 678"');
console.log(re.test('+0412 345 678') ? 'pass' : 'fail', '"+0412 345 678"');
console.log(re.test(' +0412 345 678 ') ? 'pass' : 'fail', '" +0412 345 678 "');
<!DOCTYPE>
<html>
<head></head>
<body>
<form>
<input type='tel' name='mobilePhone' pattern='^\s*\+?04(\d)(?!\1\s*\1{3}\s*\1{3})\d\s*\d{3}\s*\d{3}\s*$' placeholder='enter phone number'>
<input type='submit'>
</form>
</body>
</html>
^\s*
- 从零个或多个空格字符开始\+?
- 后跟可选的+
04
- 后跟文字04
(\d)
- 后跟一位数字(第1组) (?!...)
- 未遵循
\1
- 第1组的值\s*
- 后跟零个或多个空格字符\1{3}
- 然后3
次出现第1组的值\s*
- 后跟零个或多个空格字符\1{3}
- 然后3
次出现第1组的值 \d
- 后跟一位数字
\s*
- 后跟零个或多个空格字符\d{3}
- 然后3
次出现第1组的值\s*
- 后跟零个或多个空格字符\d{3}
- 然后3
次出现第1组的值\s*$
- 以零个或多个空格字符结尾