2011-06-23 22 views
46

¿Cómo uso una expresión regular de javascript para verificar una cadena que no coincide con ciertas palabras?javascript expresión regular para que no coincida con una palabra

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

'ABCD' -> false

'cdef' -> false

'bcd' -> true

EDITAR

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

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.

Respuesta

60

Esto es lo que busca:

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

la explicación está aquí: Regular expression to match a line that doesn't contain a word?

+3

Lo siento, pero ¿puedo preguntar cuál estoy duplicando? – ssgao

+1

Evite publicar una respuesta que está reflejando otra respuesta en una pregunta diferente en el mismo sitio ([tan]) – Alexander

+2

gracias, pero creo que no es lo mismo, donde OP pregunta si coincide una cadena que no contiene * cierto * las palabras y la respuesta a otra pregunta se refieren a * una * palabra, pero de todos modos lo marqué como administrador, mira si esto ayuda. – ssgao

1
function test(string) { 
    return ! string.match(/abc|def/); 
} 
+1

'String.match (/ abc | DEF /)' es probablemente más eficiente aquí – SpliFF

+0

hecho ... gracias. – Flimzy

+0

O .. 'return! String.match (...' – Kayla

12
if (!s.match(/abc|def/g)) { 
    alert("match"); 
} 
else { 
    alert("no match"); 
} 
+1

¿Por qué están capturando en su expresión regular? – Flimzy

+0

¡Buen punto! Creo que pensé que si no capturo podría significar ab (c | d) ef. –

0
function doesNotContainAbcOrDef(x) { 
    return (x.match('abc') || x.match('def')) === null; 
} 
3

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

Esto se puede hacer de 2 maneras:

if (str.match(/abc|def/)) { 
         ... 
        } 


if (/abc|def/.test(str)) { 
         .... 
        } 
Cuestiones relacionadas