solo - javascript expresión regular para no coincidir con una palabra
probar expresiones regulares (6)
¿Cómo uso una expresión regular de javascript para verificar una cadena que no coincide con ciertas palabras?
Por ejemplo, quiero una función que, cuando se pasa una cadena que contiene abc
o def
, devuelve false.
''abcd'' -> falso
''cdef'' -> falso
''bcd'' -> true
EDITAR
Preferiblemente, quiero una expresión regular tan simple como algo así como [^ abc], pero no entrega el resultado esperado ya que necesito letras consecutivas.
p.ej. Quiero myregex
if ( myregex.test(''bcd'') ) alert(''the string does not contain abc or def'');
La declaración myregex.test(''bcd'')
se evalúa como true
.
Aquí hay una solución limpia:
function test(str){
//Note: should be /(abc)|(def)/i if you want it case insensitive
var pattern = /(abc)|(def)/;
return !str.match(pattern);
}
Esto es lo que buscas:
^((?!(abc|def)).)*$
La explicación está aquí: ¿ Expresión regular para hacer coincidir una línea que no contiene una palabra?
Esto se puede hacer de 2 maneras:
if (str.match(/abc|def/)) {
...
}
if (/abc|def/.test(str)) {
....
}
function doesNotContainAbcOrDef(x) {
return (x.match(''abc'') || x.match(''def'')) === null;
}
function test(string) {
return ! string.match(/abc|def/);
}
if (!s.match(/abc|def/g)) {
alert("match");
}
else {
alert("no match");
}