Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript regular expression to not match a word

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.

like image 554
bxx Avatar asked Jun 23 '11 03:06

bxx


Video Answer


3 Answers

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: Regular expression to match a line that doesn't contain a word

like image 75
ssgao Avatar answered Sep 23 '22 17:09

ssgao


if (!s.match(/abc|def/g)) {
    alert("match");
}
else {
    alert("no match");
}
like image 21
Petar Ivanov Avatar answered Sep 23 '22 17:09

Petar Ivanov


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);
}
like image 25
NoBrainer Avatar answered Sep 21 '22 17:09

NoBrainer