Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
Patrón Regex para hacer coincidir todas las palabras de una frase mientras se aceptan comillas (') en el medio pero NO en el primero o el final de la palabra

He estado buscando durante un par de días y todavía no podía entenderlo.

Esta es la frase,

 const phrase = `"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.`;

y esta es la transformación esperada,

 ['that's', 'the', 'password', 'password', '123', 'cried', 'the', 'special', 'agent', 'so', 'i', 'fled']

El primer elemento ( eso es ) de la matriz es el área del problema.

Solo puedo obtener debajo de la transformación,

 ['thats', 'the', 'password', 'password', '123', 'cried', 'the', 'special', 'agent', 'so', 'i', 'fled']

Usando el siguiente código

 const cleanPhrase = phrase.replace(/["':!,.]/g, '').replace(/[\n]/g, ' ').toLocaleLowerCase() const words = cleanPhrase.split(' ');

¿Hay alguna manera de ignorar las comillas simples en 'Password 123' pero aceptar las comillas simples en that's ?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Primero, creo que es mejor usar String.prototype.match() en lugar de dividir.
Entonces hay 2 métodos simples para eso:

A) Sin usar mirar atrás

 const phrase = `"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.`; console.log(phrase.match(/(?!')[\w']*\w/g));

prueba en vivo

B) Uso de mirar atrás ( verifique la compatibilidad del navegador )

 const phrase = `"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.`; console.log(phrase.match(/(?!')[\w']+(?<!')/g));

Explicación
  • \w = [a-zA-Z0-9_]
  • [\w'] un conjunto de caracteres/clase + '
    • * Cero o más largo (Del conjunto)
    • + Uno o más largos (Del conjunto)
  • (?!') Verifique si en el primero de su adelante no hay un '
  • (?<!') Comprueba si lo último de tu trasero no es un '

Nota: en el primer método, [\w']* puede ser cero o más, por lo que para verificar antes de eso, uso una clase de longitud de carácter ( \w ) sin la comilla ' para evitar usar una mirada retrospectiva negativa y también apoyo incluso palabras de un personaje como I

about 4 years ago · Juan Pablo Isaza Denunciar

0

Primero reemplazaría todas las comillas que están rodeadas de letras con un "marcador de posición"... Ese es un carácter que no debería aparecer en la cadena. Usé una tubería ( | ) en el siguiente ejemplo.

 const phrase = `"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.`; const cleanPhrase = phrase // Replace all quotes with a placeholder .replace(/(\w)'(\w)/, "$1|$2") .replace(/["':!,.]/g, "") .replace(/[\n]/g, " ") // Restore the quotes where there is a placeholder .replace(/(\w)\|(\w)/, "$1'$2") .toLocaleLowerCase(); const words = cleanPhrase.split(" "); console.log(words);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Primero reemplace todos los símbolos con una cadena vacía, luego reemplace ' , ' y \n con un solo espacio:

 const phrase = `"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.`; const words = phrase.replace(/["!.:,]/g, '') .replace(/\s\'|\'\s|\n/g, ' ') .toLocaleLowerCase().split(' '); console.log(words);

También puede usar dividir en lugar del segundo reemplazo:

 const phrase = `"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.`; const words = phrase.toLocaleLowerCase() .replace(/["!.:,]/g, '') .split(/\s\'|\'\s|\n|\s/g); console.log(words);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda