我正在尝试编写将使用给定字符串并将其与某种格式进行比较的代码。
这就是我正在使用的:

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显示pNumberphoneNumber以便进行比较。消息框显示:pNumber = 555-555-5555phoneNumber = \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。显示MessageBoxpNumber = (555)555-5555phoneNumber = (\d{3})\d{3}-\d{4}

现在,我对Regex的了解还不足以自己解决此问题。根据我到目前为止的研究,()引起了问题。我相信这是因为()用于正则表达式,而破折号不是。因此,破折号不会弄乱任何东西。我的问题是如何更改代码以适合我的需求?如何在代码中毫无问题地获得()?

最佳答案

\(\)转义括号。

private static readonly Regex phoneNumber = new Regex(@"\(\d{3}\)\d{3}-\d{4}");

10-07 23:10