我正在尝试编写将采用给定字符串并将其与某种格式进行比较的代码。这就是我正在使用的:
private static readonly Regex phoneNumber = new Regex(@"\d{3}-\d{3}-\d{4}");
public static bool VerifyPhoneNumber(string pNumber)
{
return phoneNumber.IsMatch(pNumber);
}
格式为000-000-0000
,与 比较时返回 true 555-555-5555
。我也有一个MessageBox
显示pNumber
和phoneNumber
比较的目的。消息框显示:pNumber = 555-555-5555
和phoneNumber = \d{3}-\d{3}\d{4}
但这不是我想要的格式。我想使用这种格式(000)000-0000。为了使用这种格式,我将 phoneNumber 更改为:
private static readonly Regex phoneNumber = new Regex("(" + @"\d{3}" + ")" + @"\d{3}-\d{4}");
但是当我运行这段代码并与之比较(555)555-5555
时,它返回 false。MessageBox
为此显示:pNumber = (555)555-5555
和phoneNumber = (\d{3})\d{3}-\d{4}
现在我还不够了解Regex
自己解决这个问题。根据我迄今为止的研究, () 导致了这个问题。我相信它是因为 () 用于正则表达式而破折号不是。所以,破折号不会搞砸任何事情。我的问题是如何更改代码以满足我的需要?如何在没有问题的情况下获得代码中的 ()?