Javascript 正则表达式电话号码验证
我为黎巴嫩电话号码写了这个正则表达式,基本上它应该以 00961或+961哪个是国际代码然后是区号哪个是 可以是0到9之间的任意数字,也可以是蜂窝代码“70”或“76”或 “79”然后是一个6数字正好 我对以下reg ex进行了编码,但没有6位数字部分:Javascript 正则表达式电话号码验证,javascript,regex,vb.net,Javascript,Regex,Vb.net,我为黎巴嫩电话号码写了这个正则表达式,基本上它应该以 00961或+961哪个是国际代码然后是区号哪个是 可以是0到9之间的任意数字,也可以是蜂窝代码“70”或“76”或 “79”然后是一个6数字正好 我对以下reg ex进行了编码,但没有6位数字部分: ([0][0][6][1])([0-9][1}[7][0][7][1][7][6][7][8])$ 当我想添加代码以确保表达式只允许多出6位数字时: ^([0][0][6][1])([0-9][1}[7][0][7][1][7][6][7][8
([0][0][6][1])([0-9][1}[7][0][7][1][7][6][7][8])$
当我想添加代码以确保表达式只允许多出6位数字时:
^([0][0][6][1])([0-9][1}[7][0][7][1][7][6][7][8])([0-9][6}))$
它似乎接受5或6位数字,而不是6位数字
我很难找到错误的地方使用这个regex
((00)|(\+))961((\d)|(7[0168]))\d{6}
这就是我要使用的
/^(00|\+)961(\d|7[069])\d{6}$/
- 00或+
- 961
- 1位数字或70、76或79
- 六位数
[0-9]{1}
也将匹配蜂窝代码7x。这意味着“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”)//真的
这里的代码应该是这样断开的:009617612345
但是正则表达式实际上是这样把它打破的:009617612345
,因为7
在\d
中匹配,其余的组合在一起,正好是6位数字,并且匹配
我不确定这是否真的有效,但我想这不是你想要的,否则你问题中的正则表达式应该有效
这里有一个避免陷阱的长正则表达式:
/^(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})/.测试(“009617012345”)
假的
/(00 |\+)961([0-68-9]\d{6}7[234579]\d{5}7[0168]\d{6})/.测试(“009618012345”)
真的
/(00 |\+)961([0-68-9]\d{6}7[234579]\d{5}7[0168]\d{6})/.测试(“009617612345”)
假的
/(00 |\+)961([0-68-9]\d{6}7[234579]\d{5}7[0168]\d{6})/.测试(“0096176123456”)
真的
正如@ellak所说,009617012345
将成功通过,因为7
在[0-9]
中匹配,其余的正好是6位数字。@路人请查看我在ellak回答中的评论我不确定VB.NET如何解析正则表达式,但在Chrome中,我上面提供的例子仍然可以通过@burning|u LEGION给出的正则表达式测试:/((00)|(\+))961((\d)|(7[0168]))\d{6}/.test(“009617012345”)
返回true
。但是@burning|u LEGION提供的答案用\d替换了[0-9]{1},对吗?而且效果很好!这不符合961之后的数字吗?请检查我对@ellak answer的评论,如果你能解释diifrence@burning_LEGION对不起,我的错。但它和00961x匹配吗?而不是009616123456?@ellak我想念brekets,我加了一句