验证英国电话号码(Regex C#)

use*_*591 7 c# regex

public static bool ValidatePhoneNumber(string number)
{
    return Regex.Match(number, "^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$", RegexOptions.IgnoreCase).Success;
}
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,但我得到错误说Unrecognized escape sequence.有人可以帮忙吗?需要能够拥有+44.

Rah*_*thi 12

如果你试图用+44获得它,你可以试试这个正则表达式

^(((\+44\s?\d{4}|\(?0\d{4}\)?)\s?\d{3}\s?\d{3})|((\+44\s?\d{3}|\(?0\d{3}\)?)\s?\d{3}\s?\d{4})|((\+44\s?\d{2}|\(?0\d{2}\)?)\s?\d{4}\s?\d{4}))(\s?\#(\d{4}|\d{3}))?$
Run Code Online (Sandbox Code Playgroud)

这将匹配

+447222555555 | +44 7222 555 555 | (0722) 5555555 #2222
Run Code Online (Sandbox Code Playgroud)

REGEX DEMO


你可以试试这个正则表达式的英国电话号码:

/^\(?0( *\d\)?){9,10}$/
Run Code Online (Sandbox Code Playgroud)

此正则表达式将检查10个或11位数字它们有在英国的电话号码,以0开始,其可具有任何的数字之间格式化的空间,和任选地一组括号内为区号的.

同样在你的正则表达式中你需要添加@来摆脱那个错误(Unrecognized escape sequence):

public static bool ValidatePhoneNumber(string number)
{
   return Regex.Match(number, @"^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$", RegexOptions.IgnoreCase).Success;
}
Run Code Online (Sandbox Code Playgroud)

  • @EaterOfCode: - 更新了我的答案!感谢更新! (2认同)

小智 5

这是一个非常可靠的正则表达式,将处理区号,分机号和+44国际代码以及手机号码甚至10位数字:

^(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$
Run Code Online (Sandbox Code Playgroud)

  • 这似乎是一个非常全面的正则表达式模式,与此处列出的所有有效英国电话格式相匹配:[area-codes.org.uk](http://www.area-codes.org.uk/formatting.php)可以找到我的测试此处:[regex101.com](https://regex101.com/r/f0HaLr/3) (2认同)