Javascript 正则表达式与单词不匹配

如何使用 javascript 正则表达式检查与某些单词不匹配的字符串?

例如,我想要一个函数,当传递一个包含 abcdef的字符串时,返回 false。

“ abc d”-> false

‘ cdef’-> false

'bcd' -> true

EDIT

最好是像[ ^ abc ]这样简单的正则表达式,但它不能传递预期的结果,因为我需要连续的字母。

eg. I want myregex

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

语句 myregex.test('bcd')的计算结果为 true

203092 次浏览
function test(string) {
return ! string.match(/abc|def/);
}
if (!s.match(/abc|def/g)) {
alert("match");
}
else {
alert("no match");
}
function doesNotContainAbcOrDef(x) {
return (x.match('abc') || x.match('def')) === null;
}

这里有一个干净的解决办法:

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

This is what you are looking for:

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

?!部分被称为 消极的前瞻性断言。它的意思是“后面没有跟着”。

The explanation is here: 正则表达式匹配不包含单词的行

这可以通过两种方式实现:

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




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