我正在尝试在JavaScript中使用正则表达式来测试表单文本输入的值是否为法语手机号码。


  法语移动电话号码以0607开头,后跟8位数字,例如:06112233440744332211。这些数字的国际形式以+33开头,它替换了第一个0,例如:+33611223344+33744332211


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

我添加了字边界(\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将不再起作用。

最佳答案

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


您的正则表达式工作正常。只需添加锚点。

参见演示。

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

10-06 09:56