gpt4 book ai didi

Javascript RegExp 量词问题

转载 作者:行者123 更新时间:2023-11-30 10:53:21 25 4
gpt4 key购买 nike

我有一些运行的 JavaScript 使用正则表达式替换来修改页面上的内容。不过,我对特定的正则表达式量词有疑问。我读过的所有文档(我知道它也适用于其他语言的正则表达式)都说 JavaScript 支持 {N}{N,}{N,N} 量词。也就是说,您可以指定所需的特定数量的匹配项或匹配项的范围。例如。 (zz){5,} 匹配至少 10 个连续的 z,而 z{5,10} 将匹配从 5 到 10 的任意数量的 z,仅此而已不少于此。

问题是,我可以匹配一个确切的数字(例如 z{5}),但不能匹配一个范围。我能想到的最接近的是它与正则表达式字符串中的逗号有关,但我不明白为什么也无法解决这个问题。我尝试转义逗号,甚至使用 unicode 十六进制字符串作为逗号 (\u002C),但无济于事。

为了消除任何可能的误解,并解决评论中提出的一些问题,这里有一些附加信息(也可在评论中找到):我已尝试以所有可能的方式创建数组,包括 var = [/z{5,}/gi,/a{4,5}/gi];, var = [new RegExp('z{5,}', 'gi'), new RegExp('a{4,5}', 'gi')];, 以及 var[0] = new RegExp('z{5,}'), 'gi') ;, var[1] =/z{5,}/gi; 等。该数组在 for 循环中用作 somevar.replace(regex[i ], subst[i]);.

最佳答案

也许我误解了这个问题,但似乎 {n} 运算符的 Javascript 实现相当不错:

"foobar".match(/o{2,4}/); // => matches 'oo'
"fooobar".match(/o{2,4}/); // => matches 'ooo'
"foooobar".match(/o{2,4}/); // => matches 'oooo'
"fooooooobar".match(/o{2,4}/); // => matches 'oooo'
"fooooooobar".match(/o{2,4}?/); // => lazy, matches 'oo'
"foooobar".match(/(oo){2}/); // => matches 'oooo', and captures 'oo'
"fobar".match(/[^o](o{2,3})[^o]/); // => no match
"foobar".match(/[^o](o{2,3})[^o]/); // => matches 'foob' and captures 'oo'
"fooobar".match(/[^o](o{2,3})[^o]/); // => matches 'fooob' and captures 'oo'
"foooobar".match(/[^o](o{2,3})[^o]/); // => no match

关于Javascript RegExp 量词问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com