正则表达式字母数字电话号码?

时间:2013-11-20 23:06:00

标签: ruby regex

目前我正在使用正则表达式来验证仅限数字的电话号码,如下所示:

/^([\d \-\)\(\+\.]{10,16})$/

我需要升级正则表达式以支持以下有效的电话号码:

(866) 999-EMAS
1-800-MY-APPLE

由于

2 个答案:

答案 0 :(得分:2)

没有正则表达式来验证电话号码......真的,忘了它。 : - )

世界上有几十种格式,有时在国家内部。这意味着你无法保证数字的位数 - 顺便说一下,它可以是两个,甚至一个数字。

添加侮辱伤害,每个地方似乎都有自己的方式来呈现电话号码:使用本地代码和区域代码或没有,带有大量括号,括号,破折号,点,空格,字母,甚至单词;你说出来的。在一些国家,当地人甚至不能就如何在相同数字之间格式化它们达成一致。

最后,您可以通过在括号中添加内容来修复正则表达式,例如: [\d \-\)\(\+\.a-zA-Z]。但最终它仍然会像需要非空的邮政编码一样错误,因为考虑到长度因素或某些涉及你尚未识别的怪异角色的边缘情况。

真正确定的唯一方法是拨打号码并实际拨打电话。

答案 1 :(得分:0)

在调整现有的正则表达式之后,我发现这似乎有用。

/^([\d \-\)\(\+\.[a-zA-Z0-9]]{10,16})$/