我在想怎么写我自己的正则表达式。
我列出了一个可行的电话号码和不可行的,并试图确保可行的包括在内,但我不知道如何完成它。
允许列表

0665363636 //
06 65 36 36 36 //
06-65-36-36-36 //
+33 6 65 36 36 36

不允许
06 65 36 36 //
2336653636 //
+3366536361 //
0065363636

我搞砸了一点,现在有了这个:
[0+][63][6 \-3][56\ ][\d{1}][\d \-]\d{2}[\d{1} \-]\d\d? ?\-?\d?\d? ?\d?\d?$

这挡住了不允许的2号和4号,但我似乎不知道如何挡住其他的。
我应该写最少的数字吗?如果是的话,我该怎么做。

最佳答案

看起来您只想将允许的电话号码限制为法国移动电话号码。
您列出了有效和无效字符串,这是一个很好的起点。但是,我认为您只是想一次性地编写模式,这很容易出错。
让我们遵循一个简单的方法,遍历允许的列表并为每个列表创建一个非常简单的正则表达式:

0665363636         -> ^06\d{8}$
06 65 36 36 36     -> ^06(?: \d\d){4}$
06-65-36-36-36     -> ^06(?:-\d\d){4}$
+33 6 65 36 36 36  -> ^\+33 6(?: \d\d){4}$

到现在为止,一直都还不错。
现在,只需将所有内容合并到一个regex中,并稍微考虑一下(前3种情况下,06部分很常见):
^06(?:\d{8}|(?: \d\d){4}|(?:-\d\d){4})|\+33 6(?: \d\d){4}$

ET Voice。Demo here
作为补充说明,您应该使用:
^0[67](?:\d{8}|(?: \d\d){4}|(?:-\d\d){4})|\+33 [67](?: \d\d){4}$

法国手机号码也可以从07年开始。

关于ruby - 正则表达式 ruby 电话号码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30139798/

10-13 02:37