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

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

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 Report

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 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!