【问题标题】:C# Regex for invalid characters用于无效字符的 C# 正则表达式
【发布时间】:2014-05-21 22:40:03
【问题描述】:

您好,我需要验证应仅接受字母数字、-、_ 的输入 为了测试这一点,我使用以下代码

 string pattern = @"[^a-z A-Z 0-9._-]$";
        var matches = Regex.Matches(m_ModelName.Value, pattern, RegexOptions.IgnoreCase);
        return (matches.Count > 0);

如果计数>0,则表示存在无效字符。但它永远不会按照我的期望返回。请告诉我我做错了什么。这是严格的 c#

【问题讨论】:

  • 尝试转义正则表达式中的句点,使用反斜杠\.,否则它可能匹配所有字符 - @"[^a-z A-Z 0-9\._-]$"
  • @Mark 字符类中的句点loses its regex meaning.
  • @HamZa 谢谢!至少我学到了一些东西! :-)
  • @user841612 你可能需要删除$,因为它意味着end of string
  • 尝试使用IsMatch这将表明真或假

标签: c# regex validation


【解决方案1】:
string pattern = @"[^a-z A-Z 0-9._-]$";

这个正则表达式只匹配字符串中的最后一个字符(因为 $ 锚)。

你可能想要这样的东西:

 string pattern = @"^[a-zA-Z0-9._-]+$";
 return Regex.IsMatch(m_ModelName.Value, pattern, RegexOptions.IgnoreCase);

您还可以查看\w 字符类。

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多