regulares regular probar palabra online numeros expresiones expresion example exacta especiales espacio ejemplos caracteres blanco alfanumerico javascript regex invert

regular - javascript regex example



¿Cómo puedo invertir una expresión regular en JavaScript? (4)

Tengo una cadena A y quiero probar si otra cadena B no es parte de ella. Esta es una expresión regular muy simple cuyo resultado se puede invertir después.

Yo podría hacer:

/foobar/.test(''[email protected]'')

e invertirlo después, así:

!(/foobar/).test(''[email protected]'')

El problema que tengo es que necesito hacerlo dentro de la expresión regular y no con su resultado. Algo como:

/!foobar/.test(''[email protected]'')

(que no funciona)

En otras palabras: la expresión regular debería probar la inexistencia y devolver verdadera en ese caso.

¿Es esto posible con JavaScript?


Aquí hay un ejemplo de una desigualdad. Primero aísto el operador ''<'', luego los operandos ''a'' y ''b''. Básicamente, tomo la expresión directa, la incluyo en paréntesis derechos, invierto la última por ''^'' y finalmente incrusto la expresión resultante entre corchetes, porque ''^'' al principio se interpretaría de manera diferente.

var _str = "a < b" ; var _op = /</g ; var _no_op = /[^(<|/ )]/g ; console.log( _str, _str.match( _op ) ); // get ''<'' console.log( _str, _str.match( _no_op ) ); // get ''a'', ''b''

Ps: Acabo de agregar el espacio en blanco en la expresión inversa, para recuperar la coincidencia exacta para los operandos.



Tratar:

/^(?!.*foobar)/.test(''[email protected]'')

Una (breve) explicación:

^ # start of the string (?! # start negative look-ahead .* # zero or more characters of any kind (except line terminators) foobar # foobar ) # end negative look-ahead

Entonces, en inglés simple, esa expresión regular se verá desde el comienzo de la cadena si la cadena ''foobar'' puede ser "vista". Si se puede "ver", no hay * coincidencia.

* ¡no hay coincidencia porque es una mirada negativa hacia adelante!

Más acerca de este aspecto de anticipación: http://www.regular-expressions.info/lookaround.html Pero tenga en cuenta que JavaScript solo admite look-aheads, no look- behinds !


^(?!.*(word1|word2|word3))

coincidirá con una cadena que no contenga ninguna word1 , word2 o word3 (y puede extender la lista indefinidamente). Pero esto también combina cadenas nulas. Para rechazar el uso de nulos

^(?!$)(?!.*(word1|word2|word3))