Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式电话号码验证_Javascript_Regex_Vb.net - Fatal编程技术网

Javascript 正则表达式电话号码验证

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

我为黎巴嫩电话号码写了这个正则表达式,基本上它应该以

00961+961哪个是国际代码然后是区号哪个是

可以是09之间的任意数字,也可以是蜂窝代码“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-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
  • 六位数

由于7介于0和9之间,因此
[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,我加了一句