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
.
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?
if (!s.match(/abc|def/g)) {
alert("match");
}
else {
alert("no match");
}
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);
}
function test(string) {
return ! string.match(/abc|def/);
}
Cela peut être fait de 2 manières:
if (str.match(/abc|def/)) {
...
}
if (/abc|def/.test(str)) {
....
}
function doesNotContainAbcOrDef(x) {
return (x.match('abc') || x.match('def')) === null;
}