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

155
Vistas
Javascript method to capitalize the first letter of every word and also every word after hyphen or dash

I need a JavaScript method to allows me to convert the first letter of every word in a string to a capital letter like this: mike tyson wayne to Mike Tyson Wayne. The method should also be able to convert the first word after an hyphen to capital letter like this: mike-tyson wayne to Mike Tyson Wayne. The method should also be able to convert uppercase words to capitalize words like this: MIKE-TYSON WAYNE to Mike Tyson Wayne.

I have tried this method using regular expression gotten from another thread:

text.replace(/(^\w{1})|(\s{1}\w{1})/g, match => match.toUpperCase())
  • (^\w{1}): match first char of string
  • |: or
  • (\s{1}\w{1}): match one char that came after one space
  • g: match all
  • match => match.toUpperCase(): replace with can take function, so; replace match with upper case match

It worked for converting the first letter of a string to capital letter and also works for the first letter of a string after space.

I added this expression that was supposed to cater for first letter of a string after space to the expression. The expression is (?:- |\d\. ).*

Combined with the first expression, it became:

text.replace(/(^\w{1})|(\s{1}\w{1})|(?:- |\d\. ).*/g, match => match.toUpperCase());

The problem is that the method above doesn't work for the strings after the dash but still works for the strings after space.

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

0

  • \d is a digit, so your expression matches a - or a digit followed by . ...
  • {1} means one occurrence, which is the default anyways...

Try something like this:

/(^\w)|([-\s]\w)/g
about 4 years ago · Juan Pablo Isaza Denunciar

0

A regex like ... /(?<=\b)\w/g or /(?<=\b)\p{L}/gu ... which both use a positive lookbehind for word boundaries but the second variant making use of Unicode property escapes might be a more generic yet viable approach ...

console.log(
  "mike-tyson wayne"
    .replace((/(?<=\b)\w/g), match => match.toUpperCase())
);
console.log(
  "MIKE-TYSON WAYNE"
    .toLowerCase()
    .replace((/(?<=\b)\p{L}/gu), match => match.toUpperCase())
);
.as-console-wrapper { min-height: 100%!important; top: 0; }

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