RegEx完全匹配^ abc $不起作用

时间:2014-09-04 09:05:54

标签: javascript regex phone-number exact-match

我正在尝试在JavaScript中使用正则表达式来测试表单文本输入的值是否为法国移动电话号码。

  

法国移动电话号码以0607开头,后跟8位数字,如:06112233440744332211。这些数字的国际形式以+33开头,取代第一个0,如下所示:+33611223344+33744332211

我正在使用此RegEx:(\+\b33|\b0)[67][0-9]{8}\b,它会测试输入是以+336/7还是06/7开头,后跟8位数。

我添加了Word Boundary(\b),所以像06112233440611223344(两个连接正确的表格)这样的数字不匹配。

此RegEx适用于这些案件:

0611223344 // matches
0744332211 // matches
+33611223344 // matches
+33744332211 // matches
06112233440744332211 // doesn't match

但我仍然遇到这些输入的问题:

+33611223344+33611223344
0611223344 0744332211
0744332211+33611223344
0744332211 +33611223344

他们都匹配...

我尝试以所有可能的方式将^$添加到我的RegEx,但每当我添加其中一个符号时,RegEx就不再有用了。

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式匹配所有法语电话号码

^(?:(?:0|\+33)(?:6|7))\d{8}$

DEMO

如果您想匹配此格式06 21 05 65 48+33 6 21 05 65 48的数字,请使用以下正则表达式

^(?:(?:(?:0|\+33)(?:6|7))\d{8}|0[67](?: \d{2}){4}|\+33 [67](?: \d{2}){4})$

DEMO

答案 1 :(得分:0)

^(\+\b33|\b0)[67][0-9]{8}$

你的正则表达式正常。只需添加锚点。

参见演示。

http://regex101.com/r/pP3pN1/35