Ответ 1
Это то, что вы ищете:
^((?!(abc|def)).)*$
объяснение здесь: Регулярное выражение для соответствия строке, которая не содержит слова?
Как использовать регулярное выражение javascript для проверки строки, которая не соответствует определенным словам?
Например, мне нужна функция, которая при передаче строки, содержащей либо abc
, либо def
, возвращает false.
'abcd' → false
'cdef' → false
'bcd' → true
ИЗМЕНИТЬ
Предпочтительно, я хочу, чтобы регулярное выражение было простым, как что-то вроде [^ abc], но оно не доставляет ожидаемого результата, поскольку мне нужны последовательные буквы.
например. Я хочу myregex
if ( myregex.test('bcd') ) alert('the string does not contain abc or def');
Оператор myregex.test('bcd')
оценивается как true
.
Это то, что вы ищете:
^((?!(abc|def)).)*$
объяснение здесь: Регулярное выражение для соответствия строке, которая не содержит слова?
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;
}
Это можно сделать двумя способами:
if (str.match(/abc|def/)) {
...
}
if (/abc|def/.test(str)) {
....
}