gpt4 book ai didi

javascript - 结合正则表达式,匹配两者,两者都不匹配

转载 作者:行者123 更新时间:2023-11-30 11:59:02 26 4
gpt4 key购买 nike

好的,我想组合两个正则表达式。在下面的例子中,我想提取任何只有指定字母的单词,然后从该列表中提取带有另一个字母的单词,在这个例子中是 r。

我已经阅读了该论坛上的几篇文章。

例如: Combining regular expressions in Javascript

他们说用|exp1|exp2组合表达式。这就是我所做的,但我得到了我不应该的话。如何在下面的示例中组合使用 r1r2

感谢您的帮助。

//the words in list form.
var a = "frog dog trig srig swig strog prog log smog snog fig pig pug".split(" "),
//doesn't work, can we fix?
r = /^[gdofpr]+$|[r]+/,
//These work.
r1 = /^[gdofpr]+$/,
r2 = /[r]+/,
//save the matches in a list.
badMatch = [],
goodMatch = [];
//loop through a.
for (var i = 0; i < a.length; i++) {
//bad, doesn't get what I want.
if (a[i].match(r)) badMatch[badMatch.length] = a[i];
//works, clunky. Can we combine these?
if (a[i].match(r1) && a[i].match(r2)) goodMatch[goodMatch.length] = a[i];
} //i
alert(JSON.stringify([badMatch, goodMatch])); //just to show what we got.

我得到以下内容。

[
["frog", "dog", "trig", "srig", "strog", "prog"],
["frog", "prog"]]

再次感谢。

最佳答案

只匹配g, d, o, f, pr 字符并且还有 r,使用

/^[gdofpr]*r[gdofpr]*$/

参见 regex和 JS 演示:

var a = "frog dog trig srig swig strog prog log smog snog fig pig pug".split(" ");
var res = a.filter(x => /^[gdofpr]*r[gdofpr]*$/.test(x));
document.body.innerHTML = JSON.stringify(res, 0, 4);

关于javascript - 结合正则表达式,匹配两者,两者都不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37134304/

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