【发布时间】:2011-09-13 21:30:43
【问题描述】:
我需要一个正则表达式(用于 ASP .NET 网站)来验证电话号码。它应该是灵活的,唯一的限制是:
- 至少应为 9 位数字
- 没有字母
- 可以包含空格、连字符、单个 (+)
我搜索过 SO 和 Regexlib.com,但我得到的表达式有更多限制,例如英国电话或美国等
【问题讨论】:
标签: c# asp.net regex validation
我需要一个正则表达式(用于 ASP .NET 网站)来验证电话号码。它应该是灵活的,唯一的限制是:
我搜索过 SO 和 Regexlib.com,但我得到的表达式有更多限制,例如英国电话或美国等
【问题讨论】:
标签: c# asp.net regex validation
这是超级通用的,只允许给定电话号码中的字符,包括#。它忽略任何格式模式。
@"^([\(\)\+0-9\s\-\#]+)$"
【讨论】:
@"^(?:\+?1[-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$"
这是我使用的。这将处理大多数情况下的通用电话号码验证。
【讨论】:
^\s*\+?\s*([0-9][\s-]*){9,}$
分解:
^ # Start of the string
\s* # Ignore leading whitespace
\+? # An optional plus
\s* # followed by an optional space or multiple spaces
(
[0-9] # A digit
[\s-]* # followed by an optional space or dash or more than one of those
)
{9,} # That appears nine or more times
$ # End of the string
我更喜欢后一种方式编写正则表达式,因为以后更容易阅读和修改;大多数语言都有一个需要为此设置的标志,例如C# 中的RegexOptions.IgnorePatternWhitespace。
【讨论】:
+--1---2345 - - - 678 9 - 这样的数字,并且只检查至少有九位数字并且加号只出现在开头。我想这就是你想要的。
^[0-9-+ ]+$
<asp:RegularExpressionValidator runat="server" id="rgfvphone" controltovalidate="[control id]" validationexpression="^[0-9-+ ]+$" errormessage="Please enter valid phone!" />
【讨论】:
最好让用户填写他的国家,然后为该国家应用正则表达式。每个国家/地区都有自己的电话号码格式。
【讨论】:
\+?[\d- ]{9,}
这将匹配可选地以加号开头的数字,然后是至少九个字符长的破折号和空格。
虽然这意味着破折号和空格计入九个字符。 我会删除破折号和空格,然后使用
\+?[\d]{9,}
【讨论】: