我如何忽略Javascript RegEx之间的任何内容?
例如,我想按顺序检测所有三个单词:are
you
var pattern = /([how]+[are]+[you]+)/i;
pattern.test("howare"); //false <--- expected (correct)
pattern.test("areyou"); //false <--- expected (correct)
pattern.test("howareyou"); //true <--- expected (correct)
pattern.test(" howareyou! "); //true <--- expected (correct)
pattern.test("how are you"); //false <--- this should match!
pattern.test("how areyou "); //false <--- this should match!
。
我的正则表达式:
_id: 590ac6b7663350948be1c085,
username: 'someusername',
friends:
[{
id: 590ac6ac663350948be1c083,
status: 0,
_id: 590ace171aa0aeb58f798466
}]
但是我想忽略它们之间的任何事情。
答案 0 :(得分:1)
您只想使用
在单词之间添加通配符.* // 0 or more of any character
默认情况下,正则表达式规则是贪婪的,因此尝试匹配are
将优先于.*
。
但要注意,你需要取出方括号,因为它们目前允许的东西不应该匹配。例如,他们允许hooooowareyou
匹配,因为方括号允许所有给定的字符,+
表示1或更多。
尝试类似:
how.*are.*you
目前还不清楚您是否希望所有测试用例都通过,如果您这样做,那么这里就是这个答案的一个例子https://regex101.com/r/aTTU5b/2
答案 1 :(得分:1)
您可以使用此正则表达式:
how.*?are.*?you
这将确保 , 和 以相同的顺序出现,并忽略其中的任何字符。因此它将返回howwww areee!#%@!$%$#% you?
等匹配。使用以下演示链接查看更多正面和负面情况: