正则表达式的电话号码

时间:2013-09-07 15:15:29

标签: c# asp.net-mvc regex

我想为我的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 ]")
    { }
}

2 个答案:

答案 0 :(得分:3)

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

^\+?[0-9 ]+

现在,它也会接受其他字符,所以也要添加一个行结束锚,以便正则表达式检查整个字符串:

^\+?[0-9 ]+$

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

答案 1 :(得分:0)

您可以尝试使用libphonenumber - https://github.com/erezak/libphonenumber-csharp