[英]Regular Expression Phone Number Validation
我為黎巴嫩電話號碼編寫了這個正則表達式,基本上它應該以
00961或+961是國際代碼然后是區號
可以是從0到9 的任何數字或蜂窩代碼“70”或“76”或
“79”,則6位數字恰好
我已經編寫沒有6位數的部分以下REG例如:
^(([0][0]|[+])([9][6][1])([0-9]{1}|[7][0]|[7][1]|[7][6]|[7][8]))$
當我想添加代碼以確保表達式中只允許多出 6 位數字時:
^(([0][0]|[+])([9][6][1])([0-9]{1}|[7][0]|[7][1]|[7][6]|[7][8])([0-9]{6}))$
它似乎接受 5 或 6 位數字而不是 6 位數字
我很難找出問題所在
使用這個正則表達式((00)|(\\+))961((\\d)|(7[0168]))\\d{6}
這是我會用的。
/^(00|\+)961(\d|7[069])\d{6}$/
[0-9]{1}
也將匹配蜂窩代碼7x,因為7介於0和9之間。這意味着“5位蜂窩數”將匹配7位數和6位數。
嘗試
/^(00961|\+961)([0-9]|70|76|79)\d{6}$/.test( phonenumber );
//^ start of string
// ^^^^^^^^^^^^^ 00961 or +0961
// ^^^^^^^^^^^^^^^^ a digit 0 to 9 or 70 or 76 or 79
// ^^^^^ 6 digits
// ^ end of string
正如@ellak指出的那樣,酒窖代碼正在形成一個陷阱:
/^((00)|(\+))961((\d)|(7[0168]))\d{6}$/.test("009617612345"); // true
這里的代碼應該像這樣打破: 00 961 76 12345
,
但RegEx實際上打破了它: 00 961 7 612345
,因為7
匹配\\d
,其余的組合,恰好是6位數,並匹配。
我不確定這是否真的有效,但我想這不是你想要的,否則問題中的RegEx應該有效。
這是一個有點長的RegEx,可以避免陷阱:
/^(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})$/
一些測試結果:
/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("009617012345")
false
/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("009618012345")
true
/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("009617612345")
false
/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("0096176123456")
true
就在最近,黎巴嫩電信部更改了 IMS 上的區號。 所以當前的 Regex 匹配器變成了:
^(00|\+)961[ -]?(2[1245789]|7[0168]|8[16]|\d)[ -]?\d{6}$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.