2009-07-27 14 views
29

मैं रेगेक्स में या तो @ या 'एट' से मेल खाना चाहता हूं। क्या कोई मदद कर सकता है? मैंने कोशिश करने की कोशिश की? ऑपरेटर, मुझे दे रही है/@ (कम)/लेकिन बात नहीं बनीआप नियमित अभिव्यक्ति में दो शब्दों में से किसी एक से कैसे मेल खाते हैं?

+6

आह, चलो! विकल्प मूल बातें हैं। – Gumbo

+0

[एक शब्द या अन्य युक्त नियमित अभिव्यक्ति] (http://stackoverflow.com/q/17166618/995714) –

उत्तर

54

प्रयास करें?

/(@|at)/ 

यह या तो @ या at लेकिन दोनों का मतलब है। यह एक समूह में भी कब्जा कर लिया जाता है, ताकि आप बाद में बैकरेफर के माध्यम से सटीक मिलान तक पहुंच सकें।

+0

क्या यह उन मामलों को संभालेगा जहां ईमेल पता [email protected], या latitudeataddress.com जैसा कुछ है? –

+0

ऐसा क्यों नहीं होगा? "हैंडल" से आपका क्या मतलब है? –

+0

यह झूठी सकारात्मक मैचों का उत्पादन करेगा जो मैं पूछ रहा हूं। –

32
/(?:@|at)/ 

मिमीर्स का जवाब एक अभिभावक कैप्चर करेगा; मेरा नहीं होगा आपको किस पर उपयोग करना चाहिए इस पर निर्भर करता है कि क्या आप माता-पिता को पकड़ना चाहते हैं।

+0

क्या यह किसी तरह का लुकराउंड है? मुझे "?" नहीं मिला है। डॉन गूगल। – Qwerty

+3

@Qwerty: '(? :)' कैप्चर किए बिना '()' के विपरीत, कैप्चर किए बिना समूह कर रहा है। – chaos

+0

@chaos Damn, धन्यवाद! – Qwerty

2

आप

@|at 

कि (.NET regex स्वाद में) के लिए काम करता निम्न पाठ

[email protected] johnsmithatgmail.com

+0

यह 'jonsmith @ atgmail.com' से भी मेल खाएगा क्या किसी एक से मेल खाने का कोई तरीका है लेकिन दोनों पंक्ति में नहीं? मेरा उपयोग केस उपनाम वाले किसी व्यक्ति के लिए रूटिंग कर रहा है। मुझे 'www.domain.com/name' और' www.domain.com/उपनाम 'से मिलान करने की आवश्यकता है लेकिन 'www.domain.com/namenickname' नहीं। – Costa

3

की कोशिश की है कि अगर केवल 2 बातें है है आप कैप्चर करना चाहते हैं, रेगेक्स

if (strpos($string,"@")!==FALSE || strpos($string,"at") !==FALSE) { 
    # do your thing 
} 
+1

सच है। मुझे लगता है कि यह कुछ बड़ा हिस्सा था, लेकिन यदि नहीं, तो यह शायद बेहतर है। –

संबंधित मुद्दे

 संबंधित मुद्दे