gpt4 book ai didi

javascript - 正则表达式替代项(所有匹配项)

转载 作者:行者123 更新时间:2023-11-30 06:01:57 25 4
gpt4 key购买 nike

感谢您查看我的问题。

我有一长串要在正则表达式中匹配的备选方案:

var re = new RegExp('o1|o2|o3|o4|o5|...','g')

我遇到的问题是如果 o1 是 o2 的子串会发生什么。例如

var re = new RegExp('a|b|c|ab|abc','g')

var s = 'abc'

s.match(re) -> ["a", "b", "c"]

我希望它也能够匹配“ab”和“abc”。我意识到如果我更改 RegExp 的顺序,我可以让它匹配更长的字符串,但我真的想要获得所有匹配项。

最好的方法是什么?这似乎不一定是处理一长串备选方案的最佳(或好方法)。我考虑过使用自己的正则表达式测试每个备选方案,但这似乎效率较低。

任何指导都会很棒。谢谢!

最佳答案

如果您的 RegExp 中只有一长串替代项,更好的方法是使用 StringindexOf 方法。这是输出字符串中所有备选方案索引的代码:

var alternatives = ['a', 'b', 'c', 'ab', 'abc'],
s = 'abc, cba',
i,
index;

for (i = 0; i < alternatives.length; i++) {
index = -1;
do {
index = s.indexOf(alternatives[i], index+1);
if (index !== -1) {
console.log(alternatives[i], index);
}
} while (index !== -1);
}

关于javascript - 正则表达式替代项(所有匹配项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845834/

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