我正在尝试编写将采用给定字符串并将其与特定格式进行比较的代码。 这就是我正在使用的:
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
,将其与555-555-5555
进行比较时返回true。我还有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
我自己要解决这个问题。根据我迄今为止的研究,()导致了这个问题。我相信它的因为()用于正则表达式而破折号不用。因此,破折号不会弄乱任何东西。我的问题是如何更改我的代码以满足我的需求?如何在没有问题的情况下获得代码中的()?
答案 0 :(得分:4)
使用\(
和\)
转义括号。
private static readonly Regex phoneNumber = new Regex(@"\(\d{3}\)\d{3}-\d{4}");
答案 1 :(得分:3)
“(”对于正则表达式是特殊的。如果你想要与文字括号匹配,请确保它前面有反斜杠。