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

95
Vistas
¿Cómo hacer coincidir cadenas particulares en una matriz usando javascript?

tengo una serie de cadenas como a continuación,

 const arr = [ "list-domain/1/", "list-domain/1/list/1", "some-group/2/", "some-group/2/list/2", "list/3/", "list/3/item/1" ];

como se ve desde la matriz anterior, quiero verificar si la matriz contiene cadenas de este tipo

 "list-domain/1/" or "some-group/2/" or "list/3/"

aquí los números después de / pueden ser cualquier cosa. lo que significa en "dominio de lista/1" aquí 1 puede ser 2 o 3 cualquier número. Tengo que verificar si la cadena contiene dominio de lista o algún grupo o lista seguida de / y cualquier número seguido de /

entonces, para la matriz anterior, el resultado esperado es verdadero.

ahora considere la matriz a continuación,

 const arr1 = [ "list-domain/1/list/1", "some-group/2/list/2", "list/3/item/1" ];

para arr1, la salida esperada es falsa aunque hay cadenas list-domain/1, some-group/2 y list/3 pero también están seguidas por otras cadenas como list-domain/1/list/1, some-group/2 /lista/2, lista/3/elemento/1

así que quiero encontrar los números de cadenas exactos que pueden ser cualquier cosa después de /. alguien me podria ayudar como hacer esto. Gracias.

EDITAR:

quiero que sea verdadero si la cadena tiene "lista/1/" o

cualquier cadena seguida de "lista/1" pero devuelve falso si "lista/1" es seguida por otra cadena como la siguiente

 "list-domain/1/list/1/item/1"

cierto en los casos a continuación

 "list-domain/1/list/1" "list/2" "some-group/3/list/3"
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Usa una expresión regular. Aquí hay un ejemplo.

 const rx = /^(([^\/]+)\/(\d+)\/)+$/ // or without the groups const rxNoGroups = /^([^\/]+\/\d+\/)+$/ const found = items.filter(it => rx.test(it))

Esta expresión regular prueba

  • inicio de entrada
  • no-una-barra
  • barra oblicua
  • número
  • barra oblicua
  • fin de entrada o siguiente grupo

Adáptalo a tus necesidades. Lo codifiqué para que tus palabras que no son números aún puedan contener números, así que foo/2/bar3/4/ . También puede limitar el número de repeticiones.

También puede probar que la cadena termina con / .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto le da la salida requerida usando la expresión regular (RegExp):

 arr.some(a=> new RegExp(/^(list-domain|some-group|list)\/[0-9]+\/$/g).test(a))
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si puede contar con que la forma del patrón sea siempre un identificador de cadena seguido de una identificación numérica, un analizador podría tener el siguiente aspecto:

 const arr = [ "list-domain/1/", "list-domain/1/list/1", "some-group/2/", "some-group/2/list/2", "list/3/", "list/3/item/1" ]; const parse = (str) => { const parts = str.split('/'); return parts.reduce((parsed, part, i, parts) => { if (part === '') return parsed; if (i % 2 === 0) { parsed[part] = null; } else { parsed[parts[i-1]] = part; } return parsed; }, {}); } arr.forEach(s => { console.log(parse(s)); }) // returns: // {list-domain: "1"} // {list-domain: "1", list: "1"} // {some-group: "2"} // {some-group: "2", list: "2"} // {list: "3"} // {list: "3", item: "1"}

Devuelve un objeto donde las claves son los identificadores de cadena y los valores identificadores numéricos. Sin embargo, como dije, se basa en la forma exacta de la cadena y la alteración regular de un identificador y un valor.

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