我有一些运行的JavaScript使用正则表达式替换来修改页面上的内容。不过,我对一个特定的正则表达式量词有问题。我读过的所有文档(我知道它也可以用regex在其他语言中工作)都说JavaScript支持{N}
、{N,}
{N,N}量词。也就是说,您可以指定所需的特定匹配数或匹配范围。例如,(zz){5,}
在一行中至少匹配10个z s,并且z{5、10}
将匹配从5到10的任何数量的z s,不多也不少。
问题是,我可以匹配一个确切的数字(例如z{5}
),但不能匹配范围。我能想到的最接近的是,它与正则表达式字符串中的逗号有关,但我不明白为什么,也无法绕过这一点。我尝试过转义逗号,甚至使用unicode十六进制字符串表示逗号(u002C
),但都无济于事。
为了消除任何可能的误解,并解决评论中提出的一些问题,这里有一些额外的信息(也可以在评论中找到):我已经尝试以所有可能的方式创建数组,包括var=[/z{5,}/gi,/a{4,5}/gi]
,var=[新的RegExp(z{5,},gi),新的RegExp(a{4,5},gi])
,以及var[0]=new RegExp(z{5,}),gi)
等。该数组在for循环中用作somevar.replace(regex[i],subst[i])代码>。