2011-03-03 107 views
26

我知道有逻辑运算符,如|“OR运算符”,这可以这样使用:正则表达式的逻辑和或

earth|world 

我想知道我怎么能确认我的字符串包含地球和世界。

问候, 亚历山大

+0

重复http://stackoverflow.com/questions/469913/regular-expressions-is-there-an-and-operator – kjy112 2011-03-03 03:44:43

回答

34

如果它包含地球和世界,它包含一个接一个,所以:

earth.*world|world.*earth 

一个较短的替代(使用扩展的正则表达式语法)为:

/(?=.*earth)(?=.*world).*/ 

但它不是完全像一个and运营商。你只能做or,因为如果只包含其中一个单词,则不涉及排序。如果你想拥有它们,你需要指出订单。

+3

我不会把第二个版本的hackish - 相反,特别是当更涉及两个条件,我发现连续的前瞻更直接。 – 2011-03-03 07:49:17

+0

这个正则表达式看起来可能会非常糟糕,'/^(?=.*?earth)(?=。*?world)/'会更好。 – Walf 2015-12-22 04:21:03

3

做两个测试,如果第一个失败,第二个不会在javascript中执行。例如

var hasBoth = /earth/i.test(aString) && /world/i.test(aString); 
+1

不总是方便,会很高兴知道如何用一个正则表达式来做到这一点 – 2016-12-31 05:28:23