115 votes

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

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

Par exemple, je veux une fonction qui, lorsqu'on lui passe une chaîne de caractères contenant soit abc o def renvoie un message faux.

'abcd' -> false

'cdef' -> false

'bcd' -> true

EDIT

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

eg. Je veux myregex

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

La déclaration myregex.test('bcd') est évaluée à true .

176voto

ssgao Points 511

C'est ce que vous recherchez :

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

En ?! est appelée affirmation négative de l'anticipation . Il signifie "non suivi par".

L'explication est ici : Expression régulière t

23voto

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

7voto

NoBrainer Points 1038

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);
}

2voto

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

1voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X