web-dev-qa-db-fra.com

javascript expression régulière pour ne pas correspondre à un mot

Comment utiliser une expression régulière javascript pour vérifier une chaîne qui ne correspond pas à certains mots?

Par exemple, je souhaite une fonction qui, lorsqu'elle est transmise à une chaîne contenant abc ou def, renvoie false.

'abcd' -> false

'cdef' -> false

'bcd' -> true

EDIT

De préférence, je veux une expression régulière aussi simple que quelque chose comme, [^ abc], mais elle ne donne pas le résultat attendu car j'ai besoin de lettres consécutives.

par exemple. Je veux myregex

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

L'instruction myregex.test('bcd') est évaluée à true.

80
bxx

C'est ce que vous recherchez:

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

l'explication est ici: Expression régulière pour faire correspondre une ligne qui ne contient pas un mot?

105
ssgao
if (!s.match(/abc|def/g)) {
    alert("match");
}
else {
    alert("no match");
}
17
Petar Ivanov

Voici une solution propre:

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

Cela peut être fait de 2 manières:

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


if (/abc|def/.test(str)) {
                        ....
                    } 
0
Girish Gupta
function doesNotContainAbcOrDef(x) {
    return (x.match('abc') || x.match('def')) === null;
}
0
Bemmu