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

RegEx exact match ^abc$ doesn't work

本文关键字:dons 不起作用 abc RegEx      更新时间:2023-09-26

我正在尝试在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就不再工作了。

您可以使用下面的正则表达式来匹配所有的法国电话号码,

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

演示

如果您想匹配此格式的数字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})$

演示

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

您的正则表达式运行良好。只需添加锚点。

请参阅演示。

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