Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!