小编you*_*uri的帖子

我可以优化这款手机 - 正则表达式吗?

好的,所以我有这个正则表达式:

( |^|>)(((((((\+|00)(31|32)( )?(\(0\))?)|0)([0-9]{2})(-)?( )?)?)([0-9]{7}))|((((((\+|00)(31|32)( )?(\(0\))?)|0)([0-9]{3})(-)?( )?)?)([0-9]{6}))|((((((\+|00)(31|32)( )?(\(0\))?)|0)([0-9]{1})(-)?( )?)?)([0-9]{8})))( |$|<)
Run Code Online (Sandbox Code Playgroud)

它格式化荷兰语和比利时语电话号码(我只想要那些因此31和32作为国家代码).

解密并不是很有趣,但正如你所看到的那样它也有很多重复.但现在它确实非常准确地处理它

以下所有欧洲格式的电话号码均已被接受

0031201234567
0031223234567
0031612345678
+31(0)20-1234567
+31(0)223-234567
+31(0)6-12345678
020-1234567
0223-234567
06-12345678
0201234567
0223234567
0612345678
Run Code Online (Sandbox Code Playgroud)

并且以下错误格式的不是

06-1234567 (mobile phone number in the Netherlands should have 8 numbers after 06 )
0223-1234567 (area code with home phone)
Run Code Online (Sandbox Code Playgroud)

相反,这是好的.

020-1234567 (area code with 3 numbers has 7 numbers for the phone as opposed to a 4 number area code which can only have 6 numbers for phone number)
Run Code Online (Sandbox Code Playgroud)

你可以看到它是' - '字符使它有点困难,但我需要它在那里,因为它是人们通常使用的格式的一部分,我希望能够解析它们.

现在是我的问题......你是否看到了一种简化这种正则表达式的方法(如果你看到它的错误,甚至可以改进它),同时保持相同的规则? …

regex

9
推荐指数
2
解决办法
3453
查看次数

标签 统计

regex ×1