您好,我有一个验证输入的要求,该输入应该只接受字母数字、-、_ 为了测试这一点,我正在使用以下代码
string pattern = @"[^a-z A-Z 0-9._-]$";
var matches = Regex.Matches(m_ModelName.Value, pattern, RegexOptions.IgnoreCase);
return (matches.Count > 0);
如果计数 >0 则表示存在无效字符。但它永远不会按照我的期望返回。请告诉我我做错了什么。这是严格的 c#
最佳答案
string pattern = @"[^a-z A-Z 0-9._-]$";
这个正则表达式只匹配字符串中的最后一个字符(因为 $ anchor )。
你可能想要这样的东西:
string pattern = @"^[a-zA-Z0-9._-]+$";
return Regex.IsMatch(m_ModelName.Value, pattern, RegexOptions.IgnoreCase);
您也可以查看 \w
字符类。
关于无效字符的 C# 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795046/