javascript正则expression式不匹配一个单词
如何使用JavaScript正则expression式来检查不匹配某些单词的string?
例如,我想要一个函数,当传递一个包含abc
或def
的string时,返回false。
'abcd' – > false
'cdef' – > false
'bcd' – > true
编辑
最好是,我想要一个像[^ abc]这样简单的正则expression式,但是由于我需要连续的字母,所以它并没有提供预期的结果。
例如。 我想要myregex
if ( myregex.test('bcd') ) alert('the string does not contain abc or def');
语句myregex.test('bcd')
的计算结果为true
。
这是你在找什么:
^((?!(abc|def)).)*$
这里的解释是: 正则expression式匹配一个不包含单词的行吗?
if (!s.match(/abc|def/g)) { alert("match"); } else { alert("no match"); }
这是一个干净的解决scheme:
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)) { .... }