2011-03-03 118 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