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