2013-02-14 171 views
1

我正在浏览互联网以找到适用于电话号码的正则表达式,但我发现的正则表达式并非我需要的。全球电话号码的Javascript正则表达式

我的情况下可接受的电话号码类型必须符合以下规则:

  • 可与+0-9
  • 启动所有其他字符串只允许有0-9-和空间(最好数字之间只有1个空格)

我试过目前为止:/^\+[\-\d\s]/但我没有得到正确的结果。我试着阅读一些教程,但我对此很新,看来我缺少一些东西。

例如,可接受的电话号码将是:30 6995 4488551(允许空格)或0030 6995 4488551等

任何帮助将不胜感激! :)

+0

短划线,空格,连字符等格式化。不要允许或拒绝他们 - 在测试时忽略他们。 – Quentin 2013-02-14 17:18:30

+0

也许这就是你要找的东西? [链接] http://stackoverflow.com/questions/4147614/javascript-regular-expression-for-international-phone-number [/ link] – itsid 2013-02-14 17:18:52

+0

谢谢你的回复,但那个话题的答案不是我所需要的,因为在答案中,他们只是去掉他们不想要的角色,然后验证剩下的角色。我认为这不是一个处理它的好方法。我想让用户输入正确的字符串。例如,用户不能在任何他们想要的地方输入'+',但只能在开头输入。 – 2013-02-14 17:28:26

回答

1

您的正则表达式匹配任何以+开头的单词,后跟单个-,数字或空格字符。所以,你会匹配,例如:

  • + 4qwertzuiopasdfghjkl
  • + -asdfasdfasdfasdf

,我建议你看看上http://www.regular-expressions.info/的例子和教程。至于你的电话号码的正则表达式更好的将是:

/^\+?[\d -]+$/ 

这会匹配所有有效的电话号码,但也无效结构像+---------或者干脆+后面有个空格。如果你想真的接近否认很多无效组合,我建议你阅读this,但正如你可以看到正则表达式变得混乱。

1

添加到migg的答案 - 你可以在正则表达式测试后添加更多的过滤器,例如,可以确保表达式中至少有最少数量的数字,或者你有什么。 例如,

if !(phone_number.match(/\d/g).length == 9) inValidate()