我正在尝试编写代码来获取给定的字符串并将其与特定格式进行比较。 这是我正在使用的:
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
的了解还不够,还不能自己解决这个问题。根据我目前的研究, () 是导致问题的原因。我相信它是因为 () 用于正则表达式而破折号不是。所以,破折号不会搞砸任何事情。我的问题是如何更改代码以满足我的需要?我怎样才能毫无问题地获取代码中的 ()?
最佳答案
使用 \(
和 \)
转义括号。
private static readonly Regex phoneNumber = new Regex(@"\(\d{3}\)\d{3}-\d{4}");
关于c# - 使用 Regex 检查字符串的格式是否与所需的格式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128733/