【问题标题】:Regex to match all alphanumeric and certain special characters?正则表达式匹配所有字母数字和某些特殊字符?
【发布时间】:2013-05-30 10:37:13
【问题描述】:

我正在尝试让一个正则表达式工作,它允许所有字母数字字符(大写和非大写以及数字)但也允许空格、正斜杠 (/)、破折号 (-) 和加号 (+)?

我一直在玩 refiddle:http://refiddle.com/gqr 但到目前为止还没有成功,有人有什么想法吗?

我不确定这是否有任何区别,但我正在尝试在 c# 中执行此操作?

【问题讨论】:

    标签: c# .net regex


    【解决方案1】:

    如果您想只允许这些,您还需要使用锚点^ 和$。

    ^[a-zA-Z0-9_\s\+\-\/]+$
    ^                    ^^
    

    这是您的正则表达式,我添加了第二行所示的字符。不要忘记末尾附近的+ 或* 以允许超过1 个字符(* 的情况下为0 或更多),否则正则表达式将尝试仅匹配一个字符,即使使用@987654327 @。

    您也可以将整个班级 [A-Za-z0-9_] 替换为一个 \w,如下所示:

    ^[\w\s\+\-\/]+$
    

    编辑:

    您实际上可以避免一些转义,并通过仔细放置避免最后一次转义(即确保 - 位于开头或结尾):

    ^[\w\s+/-]+$
    

    【讨论】:

    • 感谢您的解释,我设法使用您的示例使其工作,非常感谢!我得到了许多单个字符,您的解释不仅解决了我的问题,而且还帮助我了解了为什么它一开始就不起作用:-)
    【解决方案2】:

    你的正则表达式看起来像:

    /[\w\d\/\-\+ ]+/g
    

    这是所有字母、数字、/ - + 和空格(但不是任何其他空白字符)

    末尾的 + 表示至少需要 1 个字符。如果要允许空字符串,请将其更改为 *。

    【讨论】:

      【解决方案3】:

      这段代码就是这样做的:

      var input = "Test if / this+-works&sec0nd 2 part*3rd    part";
      var matches = Regex.Matches(input, @"([0-9a-zA-Z /+-]+)");
      
      foreach (Match m in matches) if (m.Success) Console.WriteLine(m.Value);
      

      输出将有 3 个结果行:

      • 测试 / this+- 是否有效
      • 第 2 部分
      • 第 3 部分(我在这里用 - 显示了空格)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        • 2022-08-17
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多