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

268
Views
Javascript regex not returning match

I have a simple regex in which I'm trying to extract the leading value including the brackets. But for some reason it returns the entire string every time.

Sample string [1] My well-being if it includes [####] i want to then be able to get the contents of the match results so i can get [4] as a result.

const arr = [
  'I am not valid',
  '[1] My well-being',
  '[1] I conversation about',
  '[3] I role within',
  '[3] I members in the company',
  '[3]I priorities',
  '[3]How other teams',
  '[4] I within a team',
  '[4] I am a peer',
  '[4] I am a label',
  '[4] I am a label'
]

const regex = /^(\[\d+\])(.*)/img;
for (let index = 0; index < arr.length; index++) {
  const name = arr[index];
  const match = name.match(regex);
  console.log(match)
}

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

It's because of your use of the g flag.

To quote the documentation:

  • If the g flag is used, all results matching the complete regular expression will be returned, but capturing groups will not.
  • if the g flag is not used, only the first complete match and its related capturing groups are returned. In this case, the returned item will have additional properties as described below.

You can fix this by simply removing g from your regular expression, then name.match() will return capturing groups as well.

about 4 years ago · Juan Pablo Isaza Report

0

If you only want the number in the brackets, leave out .* after it.

You also don't need any of the flags. i is for case-insensitive matching, but you don't have any letters. m makes ^ and $ match line endings, but you don't have any multi-line strings. And g is for foring all matches, but since the pattern is anchored there can only be one match.

And since the pattern is now the whole match, you don't need a capture group around it.

const arr = [
  'I am not valid',
  '[1] My well-being',
  '[1] I conversation about',
  '[3] I role within',
  '[3] I members in the company',
  '[3]I priorities',
  '[3]How other teams',
  '[4] I within a team',
  '[4] I am a peer',
  '[4] I am a label',
  '[4] I am a label'
]

const regex = /^\[\d+\]/;
for (let index = 0; index < arr.length; index++) {
  const name = arr[index];
  const match = name.match(regex);
  console.log(match)
}

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!