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

194
Vistas
expresiones regulares que excluyen un carácter antes de un símbolo en JS

Actualmente quiero poner en mayúscula la primera letra del nombre de una ciudad; pero dado que en mi país tenemos muchas ciudades con un nombre compuesto de varias palabras (por ejemplo, Nueva York), actualmente estoy usando esta expresión regular:

/\w\S*/g

así que estoy usando esta función

 function capitalizeWords(myString) { return myString.replace(/\w\S*/g, w => w.replace(/^\w/, c => c.toUpperCase())) }

para que pueda cambiar de new york en New York .

Pero ahora tengo un pequeño problema, tengo algunas ciudades como

sauze d'oulx

y necesito convertirlo a Sauze d'Oulx , excluyendo la d , o en cualquier caso el primer carácter antes del símbolo ' .

¿Cuál es el truco para excluir un carácter antes de uno conocido?

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

0

Puede definir todas sus excepciones como alternativas antes de hacer coincidir y capturar su coincidencia esperada:

 const texts = ["new york", "sauze d'oulx"]; const capitalizeWords = (myString) => myString.replace(/\bd['']|(\w)(\S*)/g, (m, g, h) => g ? g.toUpperCase() + h : m); for (const text of texts) { console.log(text, '->', capitalizeWords(text)); }

La expresión regular \bd['']|(\w)(\S*) coincide

  • \bd[''] - una d' o d' después de un carácter que no es una palabra o al comienzo de una cadena
  • | - o
  • (\w)(\S*) - una palabra char capturada en el Grupo 1 ( g en el código anterior) y luego cero o más espacios que no sean espacios en blanco en el Grupo 2 ( h en el código anterior).

El (m, g, h) => g ? g.toUpperCase() + h : m reemplazo significa que el reemplazo es la coincidencia en sí misma si el Grupo 1 no coincidió, de lo contrario, el carácter coincidente con \w se escribe en mayúscula.

Ampliando con la preposición di :

 const texts = ["new york", "sauze d'oulx", "bagno di romagna"]; const capitalizeWords = (myString) => myString.replace(/\bd(?:['']|i\b)|(\w)(\S*)/g, (m, g, h) => g ? g.toUpperCase() + h : m); for (const text of texts) { console.log(text, '->', capitalizeWords(text)); }

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