如何编写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/