【问题标题】:Regexp for phone numbers电话号码的正则表达式
【发布时间】:2013-09-07 15:15:28
【问题描述】:

我想为我的 ASP.NET 网站创建一个基于正则表达式的属性,以检查指定的电话号码是否有效。 它必须让这些模式通过:

+3630 1234 567

06 30 1234 567

0630 1234 567

061 123 456

06 1 123 456

所以,最重要的是第一个字符可以是“+”,但这不是必需的,之后只有数字和空格。

我尝试了以下方法,但没有成功。

public class PhoneNumberAttribute : RegularExpressionAttribute
{
    public PhoneNumberAttribute()
        :base(@"^\+?[0-9 ]")
    { }
}

【问题讨论】:

    标签: c# asp.net-mvc regex


    【解决方案1】:

    您的正则表达式目前在字符串的开头接受可选的+ 符号(到目前为止这很好),但只有一个数字或空格。您需要允许更多数字/空格,为此,您需要添加一个量词。 + 量词是一个很好的用法,表示一个或多个:

    ^\+?[0-9 ]+
    

    现在,它也将接受其他字符,因此还要添加一个行尾锚,以便正则表达式检查整个字符串:

    ^\+?[0-9 ]+$
    

    应该这样做。但是,如果您有更多规则(例如没有连续的空格、有限的位数等),则必须修改正则表达式。

    【讨论】:

    • 是的,这个正则表达式也只接受像``这样的空格。虽然 +1 指出。
    • 谢谢,我怎样才能改变它只接受一个空白字符?我最好的尝试是:^\+?[0-9 {1}]+$
    • @tuta4 你的意思是整个字符串中只有一个空格字符还是一次一个空格字符?
    • 对于整个字符串中的一个空格字符,您可以使用类似^\+?[0-9]+\s[0-9]+$ (可选的+ 符号,后跟至少一个数字、一个空格和多个数字。只允许一个一次空格,您可以使用^\+?(?:[0-9]+\s)*[0-9]+$。对于最后一个,here's a demo。您可以编辑正则表达式和不同的测试输入。
    • 谢谢,它正在工作,正则表达式测试网站真的很有帮助。
    【解决方案2】:

    你可以试试 libphonenumber - https://github.com/erezak/libphonenumber-csharp

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 2014-02-15
      • 2016-02-02
      • 2011-12-14
      • 2013-05-26
      相关资源
      最近更新 更多