जावास्क्रिप्ट एक शब्द से मेल नहीं खाने के लिए नियमित अभिव्यक्ति


87

मैं एक स्ट्रिंग की जांच के लिए एक जावास्क्रिप्ट नियमित अभिव्यक्ति का उपयोग कैसे कर सकता हूं जो कुछ शब्दों से मेल नहीं खाता है?

उदाहरण के लिए, मैं एक फ़ंक्शन चाहता हूं, जब एक स्ट्रिंग पास की जाती है जिसमें या तो होता है , abcया defगलत रिटर्न करता है।

'abcd' -> असत्य

'cdef' -> असत्य

'bcd' -> सच है

संपादित करें

अधिमानतः, मैं एक नियमित अभिव्यक्ति चाहता हूं जैसे कि कुछ सरल, [^ abc], लेकिन यह अपेक्षित परिणाम नहीं देता है क्योंकि मुझे लगातार पत्रों की आवश्यकता होती है।

जैसे। मुझे चाहिएmyregex

if ( myregex.test('bcd') ) alert('the string does not contain abc or def');

कथन myregex.test('bcd')का मूल्यांकन किया जाता है true

जवाबों:


124

यह वही है जो आप देख रहे हैं:

^((?!(abc|def)).)*$

स्पष्टीकरण यहां है: एक पंक्ति से मेल खाने के लिए नियमित अभिव्यक्ति जिसमें एक शब्द नहीं है?


1
यह उत्तर मुझे उम्मीद है! धन्यवाद। मुझे फंक्शन के बजाय एक नियमित अभिव्यक्ति की आवश्यकता है। मेरा प्रश्न संपादित किया गया और मेरे प्रश्न के नए संस्करण का उत्तर देने के लिए उत्तर आए। यही कारण है कि मैंने भ्रम से बचने के लिए "EDIT" भाग का उपयोग किया।
bxx

2
वहाँ एक जवाब है कि एक पूरे शब्द से मेल नहीं खाता है? आपका उदाहरण "abc", "babc" और "abcd" सभी विफल हो जाते हैं और जहाँ "xyz" गुजरता है। मुझे असफल होने के लिए "abc" की आवश्यकता है लेकिन पास होने के लिए "abcd"। हटाने .और *काम करने के लिए प्रतीत नहीं होता है
बजे

18
if (!s.match(/abc|def/g)) {
    alert("match");
}
else {
    alert("no match");
}

1
आप अपने रेगेक्स में कब्जा क्यों कर रहे हैं?
फ्लिमज़ी

अच्छी बात! मुझे लगता है कि मुझे लगता है कि अगर मैं कब्जा नहीं करता तो इसका मतलब हो सकता है ab (c | d) ef।
पेटार इवानोव

1
/abc|def/g.test(s)इस मामले में बूलियन को वापस करने का उपयोग करना बेहतर है ;)
538ROMEO

5

यहाँ एक साफ समाधान है:

function test(str){
    //Note: should be /(abc)|(def)/i if you want it case insensitive
    var pattern = /(abc)|(def)/;
    return !str.match(pattern);
}


0
function doesNotContainAbcOrDef(x) {
    return (x.match('abc') || x.match('def')) === null;
}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.