c# - 使用 Regex 检查字符串的格式是否与所需的格式匹配

标签 c# regex string visual-studio-2010

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

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。此显示的 MessageBox:pNumber = (555)555-5555phoneNumber = (\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/

相关文章:

c# - 删除带有条件的文本文件中的换行符

c# - 解析 XML 响应

带字符串的 ruby​​ case 语句不起作用(如预期)

javascript - freemarker 替换 & 和 &

javascript - 使用正则表达式验证表单输入

Python2.7.11 : TypeError: expected string or buffer = re. 查找全部

c - 在C中取N个带空格的输入字符串

c# - 在 C#/.NET 环境中对输入进行全局验证?

c# - 继承类规则

c# - 从 ASP.Net MVC 5 Identity 添加外键时出错?