如何编写JavaScript RegEx,以便使其与cube等单词匹配,但前提是该单词之前的20个字符范围内不存在small单词。

正则表达式应匹配:

  • cube
  • red cube
  • wooden cube
  • small................cube

  • 正则表达式不应该匹配:
  • small cube
  • small red cube
  • small wooden cube
  • ..........small......cube
  • any sphere

  • 目前,我的正则表达式的外观和工作方式如下:

    > var regex = /(?:(?!small).){20}cube/im;
    undefined
    > regex.test("small................cube")     // as expected
    true
    > regex.test("..........small......cube")     // as expected
    false
    > regex.test("01234567890123456789cube")      // as expected
    true
    > regex.test("0123456789012345678cube")       // should be `true`
    false
    > regex.test("cube")                          // should be `true`
    false
    
    cube前面必须有20个字符,其中每个字符都不是small的第一个字符。
    但这是问题所在:如果cube出现在字符串的前20个字符中,则RegEx当然不会匹配,因为cube前面没有足够的字符。

    如何固定正则表达式,以防止出现这些误报?

    最佳答案

    您可以使用此正则表达式:

    .*?small.{0,15}cube|(.*?cube)
    
    并使用匹配的#1组进行比赛。
    Online Regex Demo

    关于javascript - 正则表达式,匹配一个不成功的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24761061/

    10-12 23:45