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

95
Views
regex replace for multiple string array javascript

I have a array of string and the patterns like #number-number anywhere inside a string.

Requirements:

  • If the # and single digit number before by hyphen then replace # and add 0. For example, #162-7878 => 162-7878, #12-4598866 => 12-4598866

  • If the # and two or more digit number before by hyphen then replace remove #. For example, #1-7878 => 01-7878.

  • If there is no # and single digit number before by hyphen then add 0. For example, 1-7878 => 01-7878.

I got stuck and how to do in JavaScript. Here is the code I used:

let arrstr=["#12-1676","#02-8989898","#676-98908098","12-232","02-898988","676-98098","2-898988", "380100 6-764","380100 #6-764","380100 #06-764"]

for(let st of arrstr)
 console.log(st.replace(/#?(\d)?(\d-)/g ,replacer))
 
 function replacer(match, p1, p2, offset, string){
  let replaceSubString = p1 || "0";
  replaceSubString += p2;
  return replaceSubString;
 }
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Using the unary operator, here's a two liner replacer function.

const testValues = ["#162-7878", "#12-4598866", "#1-7878", "1-7878"];
const re = /#?(\d+?)-(\d+)/;

for(const str of testValues) {
  console.log(str.replace(re, replacer));
}

function replacer(match, p1, p2) {
  p1 = +p1 < 10 ? `0${p1}` : p1;
  return `${p1}-${p2}`; 
}

about 4 years ago · Juan Pablo Isaza Report

0

I suggest matching # optionally at the start of string, and then capture one or more digits before - + a digit to later pad those digits with leading zeros and omit the leading # in the result:

st.replace(/#?\b(\d+)(?=-\d)/g, (_,$1) => $1.padStart(2,"0"))

See the JavaScript demo:

let arrstr=["#12-1676","#02-8989898","#676-98908098","12-232","02-898988","676-98098","2-898988", "380100 6-764","380100 #6-764","380100 #06-764"]

for(let st of arrstr)
 console.log(st,'=>', st.replace(/#?\b(\d+)(?=-\d)/g, (_,$1) => $1.padStart(2,"0") ))

The /#?\b(\d+)(?=-\d)/g regex matches all occurrences of

  • #? - an optional # char
  • \b - word boundary
  • (\d+) - Capturing group 1: one or more digits...
  • (?=-\d) - that must be followed with a - and a digit (this is a positive lookahead that only checks if its pattern matches immediately to the right of the current location without actually consuming the matched text).
about 4 years ago · Juan Pablo Isaza Report

0

let list_of_numbers =["#1-7878", "#162-7878", "#12-1676","#02-8989898","#676-98908098","12-232","02-898988","676-98098","2-898988"]

const solution = () => {
    let result = ''
    for (let number of list_of_numbers) {
        let nums = number.split('-')
        if (nums[0][0] == '#' && nums[0].length > 2) {
            result = `${nums[0].slice(1, number.length-1)}-${nums[1]}`
            console.log(result)
        } else if (nums[0][0] == '#' && nums[0].length == 2) {
            result = `${nums[0][0] = '0'}${nums[0][1]}-${nums[1]}`
            console.log(result)
        } else {
            console.log(number)
        }
    }
}
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!