【问题标题】:Regex any ASCII character正则表达式任何 ASCII 字符
【发布时间】:2011-03-13 07:17:57
【问题描述】:

匹配xxx[any ASCII character here, spaces included]+xxx 的正则表达式是什么?

我正在尝试xxx[(\w)(\W)(\s)]+xxx,但它似乎不起作用。

【问题讨论】:

    标签: regex ascii


    【解决方案1】:

    如果你真的是指 any 和 ASCII(而不是所有 Unicode 字符):

    xxx[\x00-\x7F]+xxx
    

    JavaScript 示例:

    var re = /xxx[\x00-\x7F]+xxx/;
    
    re.test('xxxabcxxx')
    // true
    
    re.test('xxx☃☃☃xxx')
    // false
    

    【讨论】:

    • 这似乎不像我想象的那样工作。这匹配 ascii 字符的 BYTE 表示,而不是视觉打印/键入的字符本身?
    • @advocate,是的。你用什么语言测试的?可能就是这样。
    • 哦,我希望能找到与 ASCII 字符的印刷版本相匹配的东西 :)
    • @advocate,我想你在找^[\x20-\x7F]+$
    • 这么好的解决方案,我见过这么多不好的解决方案。我不知道正则表达式能够按字符代码过滤,优雅!
    【解决方案2】:
    [ -~]
    

    它是seen here。它匹配从空格到波浪号的所有 ASCII 字符。

    所以你的实现将是:

    xxx[ -~]+xxx
    

    【讨论】:

    • 这是完美的,因为接受的答案不适用于 ASP.NET MVC 中的 [RegularExpression] 属性 - 它被呈现为 Unicode 字符,这会破坏验证。
    • 真正优雅的解决方案,可读性强,语义上正是我想要的。
    • @Art 这不适用于我的[RegularExpression] 属性...您是否需要做其他特别的事情才能让它工作?我的属性只是<Component.DataAnnotations.RegularExpression("[ -~]", ErrorMessage:="Contains invalid characters.")>,但甚至不接受“asdf”。
    • 我想没关系。我刚刚意识到这只会匹配一个字符,所以我必须添加 + 以使其成为 [ -~]+ "any ascii character, one or more times" 以供我使用。
    • @Zack 看看我用完整的示例代码写的这篇文章:nimblegecko.com/… 希望它对您有所帮助,如果您遇到困难,请告诉我!
    【解决方案3】:

    您可以使用[[:ascii:]] 类。

    【讨论】:

    • @catwalk 你是我今天的英雄!由于某种原因,它不接受 \x00-\x7F,但它需要 [:ascii:]。谢谢!
    • 请注意 [[:ascii:]] 将匹配任何 ASCII 字符,甚至是不可打印的字符,而 [ -~] 将仅匹配 ASCII 的可打印子集。
    • “字符类”?
    • 注意:更好的名称是“POSIX 表达式”,而不是“类”。请注意,并非所有语言都支持它,例如 JavaScript,不支持它。
    【解决方案4】:

    由于 US-ASCII 字符在 0x00–0x7F (0–127) 的字节范围内:

    xxx[\x00-\x7F]+xxx
    

    【讨论】:

      【解决方案5】:

      只接受/匹配 ASCII 字符

      /^[\x00-\x7F]*$/
      

      【讨论】:

        【解决方案6】:

        尝试使用.+ 而不是[(\w)(\W)(\s)]+

        请注意,这实际上包含的内容超出了您的需要 - ASCII 仅定义了前 128 个字符。

        【讨论】:

          【解决方案7】:

          . 代表任何字符,因此您可以这样编写正则表达式:

          xxx.+xxx
          

          【讨论】:

            【解决方案8】:

            根据您对“ASCII 字符”的含义,您可以简单地尝试:

            xxx.+xxx
            

            【讨论】:

              猜你喜欢
              • 2013-02-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-09-22
              • 2011-01-08
              • 2012-11-21
              相关资源
              最近更新 更多