JavaScript Regex:忽略两者之间的任何内容



如何使用JavaScript Regex忽略任何内容?

例如,我想检测所有三个单词:how 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!

,但是我想忽略它们之间的任何东西。

您只想通过使用

在单词之间添加通配符
.* // 0 or more of any character

REGEX规则默认是贪婪,因此尝试匹配are将优先于.*

要注意,您需要取出方括号,因为它们目前允许不应该匹配的东西。例如,它们将允许hooooowareyou匹配,因为方括号允许所有给定的字符,并且+表示1或更多。

尝试类似:

how.*are.*you

目前尚不清楚您是否希望所有测试用例通过,如果您这样做,这是此答案的一个示例https://regex101.com/r/attu5b/2

您可以使用此正则:

how.*?are.*?you

这将确保 you 的情况,以相同的顺序存在,并忽略中间的任何字符。因此,它将使用下面的演示链接来返回howwww areee!#%@!$%$#% you?等的匹配项:

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

相关内容