javascript正则表达式不匹配单词


87

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

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

'abcd'->错误

'cdef'->错误

'bcd'-> true

编辑

最好是,我想要一个像[^ abc]之类的简单的正则表达式,但是由于我需要连续的字母,因此它不能提供预期的结果。

例如。我想要myregex

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

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

Answers:


124

这是您要寻找的:

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

这里的解释是: 正则表达式匹配不包含单词的行?


1
这是我期望的答案!谢谢。我需要一个正则表达式而不是一个函数。我的问题已被编辑,答案就可以回答我的问题的新版本。这就是为什么我使用“编辑”部分来避免混淆的原因。
2013年

2
是否有与整个单词都不匹配的答案?您的示例“ abc”,“ babc”和“ abcd”全部失败,并且通过“ xyz”的位置都失败了。我需要“ abc”才能失败,但要通过“ abcd”。删除.*似乎无效
gman


5

这是一个干净的解决方案:

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

1
function test(string) {
    return ! string.match(/abc|def/);
}

1
string.match(/abc|def/)在这里可能更有效
SpliFF 2011年

return !string.match(...
-。McKayla

1
另一个好的建议...你们应该发布自己的答案:)
Flimzy 2011年

0
function doesNotContainAbcOrDef(x) {
    return (x.match('abc') || x.match('def')) === null;
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.