Как использовать регулярное выражение javascript для проверки строки, не соответствующей определенным словам?
Например, мне нужна функция, которая при передаче строки, содержащей либо abc
или def
, возвращает false.
'abcd' -> ложь
'cdef' -> ложь
'bcd' -> истина
РЕДАКТИРОВАТЬ
Желательно, чтобы регулярное выражение было таким простым, как что-то вроде [^ abc], но оно не дает ожидаемого результата, поскольку мне нужны последовательные буквы.
например. я хочуmyregex
if ( myregex.test('bcd') ) alert('the string does not contain abc or def');
Заявление myregex.test('bcd')
оценивается как true
.
.
и*
, похоже, не работаетif (!s.match(/abc|def/g)) { alert("match"); } else { alert("no match"); }
источник
/abc|def/g.test(s)
в этом случае лучше использовать возвращающее логическое значение;)Вот чистое решение:
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/); }
источник
string.match(/abc|def/)
здесь, наверное, более эффективноreturn !string.match(...
function doesNotContainAbcOrDef(x) { return (x.match('abc') || x.match('def')) === null; }
источник
Это можно сделать двумя способами:
if (str.match(/abc|def/)) { ... } if (/abc|def/.test(str)) { .... }
источник