【问题标题】:asp.net mvc regular expressionasp.net mvc 正则表达式
【发布时间】:2013-02-26 07:26:40
【问题描述】:
(@"^\w+(?: \w+){0,8}$"

上述正则表达式限制了除 _ 之外的所有特殊字符。我将如何限制它。

【问题讨论】:

    标签: asp.net regex asp.net-mvc


    【解决方案1】:

    使用

    @"^[^\W_]+(?: [^\W_]+){0,8}$"
    

    允许\w 匹配的所有内容,_ 除外。

    \W 表示“任何与\w 不匹配的字符”,因此通过将其放入否定字符类并将_ 添加到该类,我们实际上是从@ 中减去_ 987654328@.*

    换句话说,[^\W_] 的意思是“匹配任何既不是非字母数字字符也不是下划线的字符”。

    另一种方法(可能更明确和更容易理解)是使用 Unicode 属性:

    @"^[\p{L}\p{N}]+(?: [\p{L}\p{N}]+){0,8}$"
    

    [\p{L}\p{N}] 表示“任何 Unicode 字母或数字”。


    *在 .NET 中,\w 速记的匹配程度远高于 [A-Za-z0-9_],尤其是国际(非 ASCII)字母。

    【讨论】:

      【解决方案2】:

      \w 替换为[a-zA-Z0-9]。快捷方式\w 匹配任何单词字符,即字母数字字符和下划线。

      @"^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+){0,8}$"
      

      一旦弄清楚如何设置i 标志(不区分大小写),就可以使用[a-z0-9]

      【讨论】:

        猜你喜欢
        • 2014-09-28
        • 1970-01-01
        • 2010-11-23
        • 2019-02-10
        • 1970-01-01
        • 2011-06-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-06
        相关资源
        最近更新 更多