Javascript REGEX:忽略介于两者之间的任何内容?

时间:2017-05-04 13:51:41

标签: javascript regex

我如何忽略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 
}]

但是我想忽略它们之间的任何事情。

2 个答案:

答案 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?等匹配。使用以下演示链接查看更多正面和负面情况:

演示:https://regex101.com/r/rzhkHC/3