用于匹配电话号码的正则表达式

时间:2010-12-09 05:10:53

标签: regex

我需要一个正则表达式来匹配电话号码。我只是想知道这个号码是否可能是一个电话号码,它可以是任何电话格式,美国或国际。所以我制定了一个策略来确定它是否匹配。

我希望它接受以下字符:0-9以及,.()-,并且可选择以+开头(对于国际号码)。如果字符串有任何其他字符,则字符串不匹配。

我试过了:

/\+?[0-9\/\.\(\)\-]/

但它匹配数字中间有+的电话号码。它匹配包含alpha字符的数字(我不希望这样)。

最后,我想将最小长度设置为9个字符。

有什么想法吗?

感谢您的帮助,我显然对RegEx的东西不太热心:))

3 个答案:

答案 0 :(得分:4)

嗯,你很亲密。试试这个:

^\+?[0-9\/.()-]{9,}$

如果没有开始和结束锚点,则允许部分匹配,因此它可以匹配字符串+123中的:-)+123

如果您想要至少9个位数,而不是任何字符(因此---...///无效),您可以使用:

^\+?[\/.()-]*([0-9][\/.()-]*){9,}$

或者,使用前瞻 - 在匹配[0-9/.()-]*的字符串之前,正则表达式引擎正在查找{9}的(\D*\d){9},每个数字可能在其他字符之前(我们将验证)更高版本)。

^\+?(?=(\D*\d){9})[0-9\/.()-]*$

答案 1 :(得分:1)

它与alpha字符匹配的原因是因为句号。你必须逃脱它。我不知道你正在使用什么编辑器,这就是我将用于VIM的内容:

^+\?[()\-\.]\?\([0-9][\.()\-]\?\)\{3,\}$

答案 2 :(得分:0)

juqeury有一个美国手机验证插件。检查此link。您还可以在源代码中看到正则表达式。