我正在尝试在JavaScript中使用正则表达式来测试表单文本输入的值是否为法语手机号码。
法语移动电话号码以06
或07
开头,后跟8位数字,例如:0611223344
或0744332211
。这些数字的国际形式以+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