¿Cómo utilizo 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 le pase una cadena que contenga abc
o def
, devuelva falso.
'abcd' -> falso
'cdef' -> falso
'bcd' -> verdadero
EDITAR
Preferiblemente, quiero una expresión regular tan simple como algo como [^ abc], pero no entrega el resultado esperado porque necesito letras consecutivas.
p.ej. yo quieromyregex
if ( myregex.test('bcd') ) alert('the string does not contain abc or def');
La declaración myregex.test('bcd')
se evalúa en true
.
javascript
regex
string
bxx
fuente
fuente
.
y*
no parece funcionarif (!s.match(/abc|def/g)) { alert("match"); } else { alert("no match"); }
fuente
/abc|def/g.test(s)
ese retorno booleano en este caso;)Aquí tienes 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); }
fuente
function test(string) { return ! string.match(/abc|def/); }
fuente
string.match(/abc|def/)
es probablemente más eficiente aquíreturn !string.match(...
function doesNotContainAbcOrDef(x) { return (x.match('abc') || x.match('def')) === null; }
fuente
Esto se puede hacer de 2 formas:
if (str.match(/abc|def/)) { ... } if (/abc|def/.test(str)) { .... }
fuente