Skip to main content
 首页 » 编程设计

无效字符的 C# 正则表达式

2024年01月26日28cloudgamer

您好,我有一个验证输入的要求,该输入应该只接受字母数字、-、_ 为了测试这一点,我正在使用以下代码

 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 字符类。