如何使用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