我为黎巴嫩电话号码写了这个正则表达式,基本上它应该以
开头 00961 或 +961 这是国际代码,然后区号可以是 0 到 9 的任何数字,也可以是手机代码“70”或“76”或
“79”然后 6 数字完全
我编写了以下 reg ex ,但没有6位数部分:
^(([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位数字
我很难找到什么错误
答案 0 :(得分:2)
使用此正则表达式((00)|(\+))961((\d)|(7[0168]))\d{6}
答案 1 :(得分:1)
这就是我要用的。
/^(00|\+)961(\d|7[069])\d{6}$/
答案 2 :(得分:1)
[0-9]{1}
也将匹配7x的手机代码,因为7介于0和9之间。这意味着“5位蜂窝号码”将匹配7位数和6位数。
答案 3 :(得分:0)
尝试
/^(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
答案 4 :(得分:0)
酒窖代码正在形成一个陷阱,正如@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