1

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

法国手机号码以06or开头,07后跟 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 就不再起作用了。

4

2 回答 2

1

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

^(?:(?: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})$

演示

于 2014-09-04T09:07:57.357 回答
0
^(\+\b33|\b0)[67][0-9]{8}$

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

见演示。

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

于 2014-09-04T09:11:36.450 回答