【问题标题】:Match string with 10 or fewer non-whitespace characters in front of string, ignoring whitespace characters匹配字符串前面有 10 个或更少非空白字符的字符串,忽略空白字符
【发布时间】:2018-09-28 01:11:08
【问题描述】:

我正在尝试编写一个正则表达式,它将搜索单词 test 并匹配以下字符串:

 test
test
//test
// tests
         // test
  // 1    2 34 test

但它会因以下情况而失败:

// 1234567890 test
12345678901test

到目前为止,我有 (?=\S|\s)test([^\n]*),除了 0-10 个非空白字符之外,它似乎可以工作。 Here's a regex101 link.

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    你可以使用:

    /^(?=(\s*?\S?){0,10}test).*?test/
    

    它使用积极的前瞻来断言用例,以便捕获不会溢出到其他行。

    https://regex101.com/r/x4EA4g/3

    【讨论】:

    • 这个看起来很完美,谢谢!我以为我必须使用前瞻,但我几乎没有使用它们,也无法找出秘诀
    【解决方案2】:

    试试这个(?:\s|^)\S{0,10}test

    https://regex101.com/r/M2oLJe/1

    【讨论】:

      【解决方案3】:

      以下正则表达式将匹配 test 前包含 10 个或更少非空白字符的字符串,忽略空白字符:

      (?:^\s*(?:\S\s*){0,10})test.*
      

      演示:https://regex101.com/r/x4EA4g/2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 2016-05-30
        • 1970-01-01
        • 2012-03-21
        相关资源
        最近更新 更多