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;
}
这就是我所拥有的,但我收到的错误是Unrecognized escape sequence
。有人可以帮忙吗?需要能够拥有+44
。
答案 0 :(得分:9)
如果您尝试使用+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}))?$
这将匹配
+447222555555 | +44 7222 555 555 | (0722) 5555555 #2222
<强> REGEX DEMO 强>
您可以在英国电话号码中试用此正则表达式:
/^\(?0( *\d\)?){9,10}$/
此正则表达式将检查英国数字中的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;
}
答案 1 :(得分:4)
这是一个非常可靠的正则表达式,将处理区号,分机号码和+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})?$
答案 2 :(得分:2)
尝试使用:
^(\+44\\s?7\\d{3}|\(?07\\d{3}\)?)\\s?\\d{3}\\s?\\d{3}$
为了让正则表达式识别\s
,\d
等,您需要设置双斜杠\\
。如果不是,您将收到illegal escape character
错误。
答案 3 :(得分:1)
效果很好,可以使用3位和4位数的扩展名。它还确保只输入手机号码。无论提供商是谁,英国手机号码都以07开头
^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}(\s?\#(\d{4}|\d{3}))?$
答案 4 :(得分:1)
尝试此代码,
using System.Text.RegularExpressions;
public static bool CheckNumber(string strPhoneNumber)
{
string MatchNumberPattern = "^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$";
if (strPhoneNumber != null)
{
return Regex.IsMatch(strPhoneNumber, MatchNumberPattern);
}
else
{
return false;
}
}
希望,这段代码对您有所帮助。