繁体   English   中英

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

[英]Javascript REGEX: Ignore anything in between?

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

正则表达式规则默认为贪婪,因此尝试匹配are将优先于.*

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

尝试类似:

how.*are.*you

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

您可以使用此正则表达式:

how.*?are.*?you

这将确保如何 存在于相同的顺序和在两者之间忽略任何字符。 因此,它将返回对howwww areee!#%@!$%$#% you?的匹配howwww areee!#%@!$%$#% you? 等等。使用下面的演示链接查看更多正面和负面案例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM