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

93
Views
Cadena JS dividida basada en múltiples condiciones RegExr diferentes

Tengo una cadena JS, digamos:

 var testString = "words here, svg_icon('Var-1') svg_icon('Var_2'), and even more words here";

Entiendo cómo hacer coincidir la cadena en función de un valor fijo, por ejemplo, si quiero hacer coincidir en svg_icon :

 var testString = "words here, svg_icon('Var-1','var_3') svg_icon('Var_2'), and even more words here"; var filterMatch = /(svg_icon)/; var results = testString.match(filterMatch); results.forEach((result) => { console.log(result); })

Esto registra las 2 coincidencias que encuentra, que estoy esperando:

 "svg_icon" "svg_icon"

Lo que estoy tratando de hacer es hacer coincidir la expresión para que mi resultado sea:

 "svg_icon('Var-1','var_3')" "svg_icon('Var_2')"

Creo que esto es posible con las expresiones regulares, pero no puedo encontrar cómo lidiar con la combinación de condiciones al hacer coincidir los nombres cambiantes de "variable" (por ejemplo 'Var-1','var_3' y Var_2 ) que pueden contener caracteres especiales (solo guiones y guiones bajos ).

Cualquier ayuda sobre qué RegEx puedo usar en esta situación, o si esto es posible con tantas condiciones.

¡Gracias de antemano por cualquier consejo!

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

0

Haga coincidir el ( hasta ) después de svg_icon .

Debe usar el modificador g para que coincida varias veces. Solo está haciendo coincidir el primer svg_icon : obtiene dos salidas porque match[0] es la coincidencia completa y match[1] es el grupo de captura.

 var testString = "words here, svg_icon('Var-1','var_3') svg_icon('Var_2'), and even more words here"; var filterMatch = /svg_icon\([^)]*\)/g; var results = testString.match(filterMatch); results.forEach((result) => { console.log(result); })

about 4 years ago · Juan Pablo Isaza Report

0

¿Es esto lo que estás buscando?

 svg_icon\('[vV][aA][rR][\-_]\d+'(?:,'[vV][aA][rR][\-_]\d+')*\)

https://regex101.com/r/WctF2Q/1

about 4 years ago · Juan Pablo Isaza Report

0

Cambie la expresión regular a /svg_icon.+?\)/g

https://regex101.com/r/3zBfDq/1

Segmento Sentido
svg_icon Coincide con el literal "svg_icon"...
. ...entonces cualquier cosa menos una nueva línea...
+ ...de una a una cantidad ilimitada de ocurrencias...
?\) ...hasta el primer paréntesis de cierre (se escapó con \ ).

Agregue una bandera g lobal que se requiere para usar .matchAll() ( .match() en esteroides):

 var testString = "words here, svg_icon('Var-1','var_3') svg_icon('Var_2'), and even more words here"; var filterMatch = /svg_icon.+?\)/g; var result = [...testString.matchAll(filterMatch)].flat(); console.log(`Result is an array of matches:`); console.log(result); console.log(`Access a single match like so:`); console.log(`First match is: result[0]`); console.log(result[0]); console.log(`Second match is: result[1]`) console.log(result[1]);
 .as-console-row::after { width: 0; font-size: 0; } .as-console-row-code { width: 100%; word-break: break-word; } .as-console-wrapper { min-height: 100% !important; min-width: 100%; }

La firma es como .match() pero deberá envolver todo entre corchetes [] y usar el operador de extensión ... y luego aplanarlo con .flat() . El resultado es una serie de coincidencias.

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!