Cómo Negar con Expresiones Regulares en JavaScript

Negar con expresiones regulares, o usar concienzudamente un patrón para excluir ciertos caracteres o secuencias, puede ser una tarea inicial un poco compleja en JavaScript. Sin embargo, una vez que entiendes los conceptos básicos, se vuelve mucho más sencillo. A continuación, te proporcionamos una breve guía con ejemplos que te ayudarán a dominar esta habilidad.

Uso del Circunflejo (^) para Negar

En expresiones regulares, el circunflejo (^) dentro de corchetes [] se usa para negar un conjunto de caracteres. Esto significa que el patrón coincidirá con cualquier carácter que no esté dentro de los corchetes.

const regex = /[^abc]/;
console.log(regex.test('d')); // true
console.log(regex.test('a')); // false

En este ejemplo, la expresión regular /[^abc]/ coincide con cualquier carácter que no sea 'a', 'b', o 'c'.

Combinación con otras secuencias

Puedes combinar la negación con otras secuencias para crear patrones más complejos. Por ejemplo, si quieres buscar cualquier carácter seguido de una letra, pero no una vocal, puedes hacerlo así:

const regex = /.[^aeiou]/;
console.log(regex.test('h3')); // true
console.log(regex.test('ha')); // false

Aquí, /.[^aeiou]/ coincide con cualquier carácter seguido de un carácter que no sea una vocal.

Negación para palabras completas

Negar palabras completas en lugar de caracteres individuales puede ser más complicado. Una técnica es usar lookaheads negativos.

const regex = /^(?!.*forbidden).*/;
console.log(regex.test('allowed sentence')); // true
console.log(regex.test('this is forbidden content')); // false

En este ejemplo, /^(?!.*forbidden).*/ niega cualquier cadena que contenga la palabra 'forbidden'.

Las expresiones regulares son una herramienta poderosa, pero deben usarse con cuidado para evitar coincidencias accidentales o fallas de seguridad.
Jodacame

Esperamos que este tutorial te haya ayudado a entender cómo negar con expresiones regulares en JavaScript. ¡Practica con distintos ejemplos y pronto te convertirás en un experto!