松散的电话号码正则表达式验证

3
我一直在寻找验证手机号的正则表达式,以进行一些宽松的验证。当我使用它们时,我将剥离一些内容,但我希望允许用户按照他们想要的方式输入其号码,并且我想按照他们输入的样式显示它。
我认为最好的方法是列出我的字符白名单。我考虑
[space] + - [0-9] ( )

有没有其他字符我应该允许?我不确定是否应该在模式中寻找与此不匹配的字符?

到目前为止,我能想到的只有:

[\+0-9\s\-\(\)]

看起来可以匹配每个字符

我一直在这里尝试,http://gskinner.com/RegExr/

使用这个作为我的数据,

+44 787 553 7794
+1-818-923-4821
&9_981-432 p

+44 (0) 20 874 1932

如果有人能够指点我正确的方向,我将不胜感激!谢谢 :)

请记住:根据你的实际使用情况,你最好只保留所有非[0-9]字符并计数数字。 - Wrikken
3个回答

2
^[\+0-9\s\-\(\)]+$

^和$将确保我们匹配整个字符串

在最后一个$之前的+将允许范围匹配整个数字(多个字符)


啊!这就是我所缺少的!谢谢。 - David Yell

0

如果您想拨打电话号码,可以将用户输入的字符串保留下来,然后删除除数字、#或+之外的所有内容。


是的,这更像是一个解决方法。我理想情况下希望验证一下,以防用户出现错误。 - David Yell

0
使用此数据, +44 (0) 20 8874 1932,
当面对非有效格式例如+44 (0) 20 8874 1932时,仅仅移除括号将导致产生不合法的数字+44 020 8874 1932。
此数字应呈现为+44 20 8874 1932以供国际使用,并且作为(020) 8874 1932以供国内使用。
国际格式不包含括号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接