javascript regular expression to not match a word
JavascriptRegexStringJavascript Problem Overview
How do I use a javascript regular expression to check a string that does not match certain words?
For example, I want a function that, when passed a string that contains either abc
or def
, returns false.
'abcd' -> false
'cdef' -> false
'bcd' -> true
EDIT
Preferably, I want a regular expression as simple as something like, [^abc], but it does not deliver the result expected as I need consecutive letters.
eg. I want myregex
if ( myregex.test('bcd') ) alert('the string does not contain abc or def');
The statement myregex.test('bcd')
is evaluated to true
.
Javascript Solutions
Solution 1 - Javascript
This is what you are looking for:
^((?!(abc|def)).)*$
The ?!
part is called a negative lookahead assertion. It means "not followed by".
The explanation is here: https://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word
Solution 2 - Javascript
if (!s.match(/abc|def/g)) {
alert("match");
}
else {
alert("no match");
}
Solution 3 - Javascript
Here's a clean solution:
function test(str){
//Note: should be /(abc)|(def)/i if you want it case insensitive
var pattern = /(abc)|(def)/;
return !str.match(pattern);
}
Solution 4 - Javascript
function test(string) {
return ! string.match(/abc|def/);
}
Solution 5 - Javascript
function doesNotContainAbcOrDef(x) {
return (x.match('abc') || x.match('def')) === null;
}
Solution 6 - Javascript
This can be done in 2 ways:
if (str.match(/abc|def/)) {
...
}
if (/abc|def/.test(str)) {
....
}