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

94
Vistas
Reemplazo de expresiones regulares para javascript de matriz de cadenas múltiples

Tengo una matriz de cadenas y los patrones como #number-number en cualquier lugar dentro de una cadena.

Requisitos :

  • Si # y el número de un solo dígito antes del guión, reemplace # y agregue 0. Por ejemplo, #162-7878 => 162-7878 , #12-4598866 => 12-4598866

  • Si el # y un número de dos o más dígitos antes del guión, reemplace elimine #. Por ejemplo, #1-7878 => 01-7878 .

  • Si no hay # y un número de un solo dígito antes del guión, agregue 0. Por ejemplo, 1-7878 => 01-7878 .

Me quedé atascado y cómo hacerlo en JavaScript. Aquí está el código que usé :

 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 Respuestas
Responde la pregunta

0

Usando el unary operator , aquí hay una función de replacer de dos líneas.

 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 Denunciar

0

Sugiero hacer coincidir # opcionalmente al comienzo de la cadena, y luego capturar uno o más dígitos antes - + un dígito para luego rellenar esos dígitos con ceros iniciales y omitir el # inicial en el resultado:

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

Vea la demostración de JavaScript:

 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") ))

La expresión regular /#?\b(\d+)(?=-\d)/g coincide con todas las apariciones de

  • #? - un # carácter opcional
  • \b - límite de palabras
  • (\d+) - Grupo de captura 1: uno o más dígitos...
  • (?=-\d) - que debe ir seguido de - y un dígito (esta es una búsqueda anticipada positiva que solo verifica si su patrón coincide inmediatamente a la derecha de la ubicación actual sin consumir realmente el texto coincidente).
about 4 years ago · Juan Pablo Isaza Denunciar

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