我正在尝试创建一个接受某种格式命令的正则表达式。模式如下:
可以以$开头并且有两个跟随值0-9,A-F,a-f(即:$ 00 - $ FF) 要么 可以是除“&<>'/”
之外的任何值*如果值必须是00-ff后的有效十六进制值,则以$开头接下来的两个值
到目前为止,我有这个
Regex correctValue = new Regex("($[0-9a-fA-F][0-9a-fA-F])");
任何帮助将不胜感激!
答案 0 :(得分:3)
您只需在“$”之前添加“\”符号即可:
string input = "$00";
Match m = Regex.Match(input, @"^\$[0-9a-fA-F][0-9a-fA-F]$");
if (m.Success)
{
foreach (Group g in m.Groups)
Console.WriteLine(g.Value);
}
else
Console.WriteLine("Didn't match");
答案 1 :(得分:2)
如果我正确地关注您,您要查找的最终结果是列表中没有的任何值"&<>' /&#34 ;,因为$和两个字母数字字符的任何组合也不在该列表中。因此,你可以表达你的意思:
Regex correctValue = new Regex("[^&<>'/]");
更新:但是,如果你确实需要知道如何正确匹配$ 00 - $ FF,这就可以解决问题:
Regex correctValue = new Regex("\$[0-9A-Fa-f]{2}");
答案 2 :(得分:2)
正则表达式$
用于锚定断言,表示:
匹配必须发生在字符串的末尾,或者在行或字符串末尾的\ n之前。
尝试使用[$]
(单个字符的字符类)或\$
(字符转义)代替。