¿Cómo puedo usar un javascript expresión regular para comprobar una cadena que no coincide con ciertas palabras?

Por ejemplo, yo quiero una función que, cuando pasa una cadena que contiene abc o def, devuelve false.

‘abcd’ -> false

‘cdef’ -> false

‘bcd’ -> true

EDITAR

Preferiblemente, quiero una expresión regular tan simple como algo como [^abc], pero no producir el resultado esperado ya que necesito consecutivos letras.

por ejemplo. Quiero myregex

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

La declaración myregex.test('bcd') se evalúa a true.

InformationsquelleAutor bxx | 2011-06-23

6 Comentarios

  1. 106

    Esto es lo que están buscando:

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

    la explicación está aquí:
    Expresión Regular para que coincida con una línea que no contiene una palabra?

    • Lo siento, pero le puedo preguntar que soy yo la duplicación?
    • gracias, pero creo que no es exactamente el mismo, donde OP es pedir a la coincidencia de una cadena que no contiene cierto las palabras y la respuesta a otra pregunta es acerca de un palabra, pero he marcado a la administración de todos modos, a ver si esto ayuda.
    • Esta es la respuesta que me espera! Gracias. Necesito una expresión regular en lugar de una función. Mi pregunta fue editado y respuestas surgió para responder a la nueva versión de mi pregunta. Esta es la razón por la que he usado un «EDITAR» de la parte para evitar la confusión.
    • Funcionó a la perfección, gracias!
    • Hay una respuesta que no corresponde a una palabra completa? Su ejemplo «abc», «babc» y «abcd» todos fallan, y donde como «xyz» pasa. Necesito «abc» para fallar, pero «abcd» para pasar. La eliminación de la . y * no parecen funcionar
    • gracias a usted salvó mi día!

  2. 17
    if (!s.match(/abc|def/g)) {
        alert("match");
    }
    else {
        alert("no match");
    }
    • ¿Por qué estás capturando en su expresión regular?
    • Buen punto! Creo que pensé que si no me captura podría significar ab(c|d)ef.
    • Es tal vez mejor uso /abc|def/g.test(s) que devuelven un valor booleano en este caso 😉
  3. 5

    Aquí es 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);
    }
  4. 1
    function test(string) {
        return ! string.match(/abc|def/);
    }
    • string.match(/abc|def/) es probablemente más eficientes aquí
    • De hecho… gracias.
    • O.. return !string.match(...
    • Otra buena sugerencia… ustedes deben de publicar sus propias respuestas 🙂
  5. 0
    function doesNotContainAbcOrDef(x) {
        return (x.match('abc') || x.match('def')) === null;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here