регулярное выражение javascript, не соответствующее ни одному слову - PullRequest
75 голосов
/ 23 июня 2011

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

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

'abcd' -> false

'cdef' -> false

'bcd' -> true

EDIT

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

например. Я хочу myregex

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

Оператор myregex.test('bcd') оценивается как true.

Ответы [ 6 ]

100 голосов
/ 19 марта 2013
16 голосов
/ 23 июня 2011
if (!s.match(/abc|def/g)) {
    alert("match");
}
else {
    alert("no match");
}
5 голосов
/ 10 октября 2012

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

function test(str){
    //Note: should be /(abc)|(def)/i if you want it case insensitive
    var pattern = /(abc)|(def)/;
    return !str.match(pattern);
}
1 голос
/ 23 июня 2011
function test(string) {
    return ! string.match(/abc|def/);
}
0 голосов
/ 17 июня 2015

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

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


if (/abc|def/.test(str)) {
                        ....
                    } 
0 голосов
/ 23 июня 2011
function doesNotContainAbcOrDef(x) {
    return (x.match('abc') || x.match('def')) === null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...