我有一个要匹配7个字符的C#正则表达式:
string digits4 = "\\d{4}";
string allowable3 = "[a-zA-z0-9 $%&#?+=!]{3}";
Regex regex1 = new Regex(digits4 + allowable3);
allowable3
用于匹配三个字母,数字或任何后续字符。但是,以下返回true:regex1.IsMatch("1234abc^")
这使我感到困惑,原因有两个:
匹配的模式有8个字符。
allowable3
不包含“ ^”。我必须在“ positive character group”(方括号内的部分)中进行一些其他意外的通配符匹配,但是我没有看到它。
最佳答案
使用锚^和$将模式四舍五入以要求完整的字符串匹配。当模式未锚定时,IsMatch搜索部分匹配项。
您的A-z模式不仅可以匹配字母,还可以匹配^和其他一些符号。您需要将其更改为A-Za-z。
string allowable3 = "[a-zA-Z0-9 $%&#?+=!]{3}";
Regex regex1 = new Regex("^" + digits4 + allowable3 + "$");