Siguiendo con este hilo, estoy tratando de hacer que esto funcione
Expresión regular de JavaScript para hacer coincidir solo X dígitos
string = '2016-2022' re = /\d{4}/g result = [...string.matchAll(re)]Esto devuelve una matriz de dos matrices. ¿Hay alguna manera de consolidar esto en 1 matriz?
Sin embargo, no parece que esto esté devolviendo los resultados deseados.
Soy nuevo en la expresión regular. ¿Qué estoy haciendo mal?
esto devuelve una serie de coincidencias
result = string.match(re)Esta es una función para analizar la cadena que codifica esos valores de dos años y devolver los años internos como elementos de una matriz:
let o = parseYearsInterval('2016-2022'); console.log(o); function parseYearsInterval(encodedValue){ var myregexp = /(\d{4})-(\d{4})/; var match = myregexp.exec(encodedValue); if (match != null) { let d1 = match[1]; let d2 = match[2]; //return `[${d1}, ${d2}]`; let result = []; result.push(d1); result.push(d2); return result; } else { return "not valid input"; } }Creo que hay mejores formas de hacerlo, como dividir la cadena contra el separador "-" y devolver ese valor como es:
console.log ( "2016-2022".split('-') ) var str = '2016-2022'; var result = []; str.replace(/\d{4}/g, function(match, i, original) { result.push(match); return ''; }); console.log(result);También quería mencionar que matchAll básicamente no hace nada más que un tiempo ejecutivo, es por eso que obtienes 2 matrices, puedes hacerlo tú mismo en un ciclo de tiempo y simplemente guardar lo que necesitas.
var result = []; var matches; var regexp = /\d{4}/g; while (matches = regexp.exec('2016-2022')) result.push(matches[0]); console.log(result);