2011-03-03 15 views
26

मैं जानता हूँ कि इस तरह के | "OR ऑपरेटर" के रूप में तार्किक ऑपरेटरों जो इस तरह इस्तेमाल किया जा सकता देखते हैं:regexp तर्क और या

earth|world 

मैं सोच रहा था कि मेरा स्ट्रिंग पृथ्वी और दुनिया में शामिल है मैं कैसे जांच कर सकता है।

संबंध है, अलेक्जेंडर

+0

डुप्लिकेट http://stackoverflow.com/questions/469913/regular-expressions-is-there-an-and-operator – kjy112

उत्तर

34

यह पृथ्वी और दुनिया है, तो इसके एक के बाद एक होता है, इसलिए:

earth.*world|world.*earth 

एक कम विकल्प (विस्तारित regex सिंटैक्स का उपयोग) होगा:

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

लेकिन यह नहीं है and ऑपरेटर की तरह। आप केवल or कर सकते हैं क्योंकि यदि केवल शब्दों में से एक शामिल है, तो इसमें कोई ऑर्डरिंग शामिल नहीं है। यदि आप उन्हें दोनों रखना चाहते हैं, तो आपको ऑर्डर को इंगित करने की आवश्यकता है।

+3

मैं दूसरे संस्करण hackish फोन नहीं होगा - इसके विपरीत पर, खासकर अगर अधिक दो स्थितियों में शामिल हैं, मुझे अनुक्रमिक लुकहेड अधिक सरल लगता है। –

+0

वह रेगेक्स ऐसा लगता है कि यह बहुत बुरी तरह से प्रदर्शन कर सकता है, '/^(?=.*? पृथ्वी) (? =। *? दुनिया)/'बेहतर होगा। – Walf

3

यह सवाल पूछा गया था और यहां उत्तर:

Regular Expressions: Is there an AND operator?

वहाँ एक सीधा "और" ऑपरेटर नहीं है, लेकिन आप अभिव्यक्ति परीक्षण जारी रखने के लिए और दूसरा सुनिश्चित कर सकते हैं अभिव्यक्ति भी एक मैच है।

3

दो परीक्षण करें, यदि पहला विफल रहता है तो जावास्क्रिप्ट में निष्पादित नहीं होता है। जैसे

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

हमेशा सुविधाजनक नहीं है, यह जानना अच्छा होगा कि इसे एक रेगेक्स के साथ कैसे किया जाए –