C#正则表达式不匹配字符串

ray*_*ran 2 c# regex string hex match

我有一个格式如下的字符串:$ 20,$ 40,$ AA,$ FF.基本上,十六进制数字和它们可以是许多字节.我想检查一个字符串是否是上述格式,所以我尝试了这样的事情:

        string a = "$20,$30,$40";

        Regex reg = new Regex(@"$[0-9a-fA-F],");
        if (a.StartsWith(string.Format("{0}{1}", reg, reg)))
            MessageBox.Show("A");
Run Code Online (Sandbox Code Playgroud)

它似乎没有用,有什么我想念的吗?

m0s*_*it0 14

$是正则表达式中的特殊字符,表示字符串结尾.由于你在字符串结束后指定了东西,所以正则表达式根本不匹配任何东西.逃避$字符就像

"\$[0-9a-fA-F]{2},"
Run Code Online (Sandbox Code Playgroud)

无论如何AFAIK这对你的字符串不起作用,因为它不以","结尾.你可以试试:

"^(\$[0-9a-fA-F]{2},?)+$"
Run Code Online (Sandbox Code Playgroud)

您甚至可以通过使用不区分大小写的正则表达式匹配来简化正则表达式:

Regex reg = new Regex(@"^(\$[0-9A-F]{2},?)+$", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

编辑:更正恰好匹配2个十六进制数字.

编辑:也许你应该写你的正则表达式检查,如:

if (Regex.IsMatch(a,@"^(\$[0-9A-F]{2},?)+$",RegexOptions.IgnoreCase)) 
{
    // Do whatever
}
Run Code Online (Sandbox Code Playgroud)

  • 这也不起作用, [] 中的范围仅匹配 1 个字符。在此处测试您的正则表达式:http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx (2认同)