регулярное выражение javascript не соответствует слову


как использовать регулярное выражение javascript для проверки строки, которая не соответствует определенным словам?

например, я хочу функцию, которая при передаче строки, содержащей либо abc или def, возвращает false.

'abcd' - > false

'cdef' - > false

' bcd ' - > true

EDIT

предпочтительно, я хочу регулярное выражение так же просто, как что-то вроде [^abc], но оно не доставляет результат ожидаемый, так как мне нужны последовательные письма.

например. Я хочу!--2-->

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

заявление myregex.test('bcd') оценивается в true.

6 60

6 ответов:

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

вот чистое решение:

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

Это можно сделать 2 способами:

if (str.match(/abc|def/)) {
                       ...
                    }


if (/abc|def/.test(str)) {
                        ....
                    }