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

92
Views
Haga coincidir cadenas con múltiples patrones de expresiones regulares en javascript

Estaba tratando de hacer coincidir múltiples patrones de expresiones regulares en una cadena para encontrar el índice de inicio y final.

 let str = "I am abinas patra and my email is abinas@gmail.com" let patterns = [ "[az]", "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,4}$" ]; let regexObj = new RegExp(patterns.join("|"), "gmi"); let match, indicesArr=[]; while ((match = regexObj.exec(str))) { let obj = { start: match.index, end: regexObj.lastIndex } indicesArr.push(obj); if(!match.index || !regexObj.lastIndex) break; }

Obtengo solo 1 objeto en indicesArr que es

 [ { "start":0, "end": 1 } ]

Enlace de la caja de arena

Quiero que todos los caracteres az coincidan y que el email también coincida. Intenté el enfoque múltiple, no pude encontrarlo. Aquí en la matriz de patterns , el patrón puede ser cualquier expresión regular, solo tomé dos ejemplos.

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

0

Usa esto en su lugar:

 function extractEmails(text) { return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi); } let str = "I am abinas patra and my email is abinas@gmail.com"; let emailAddress = extractEmails( str ); let remainingString = str.replace( emailAddress, '' ); 

 function extractEmails(text) { return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi); } let str = "I am abinas patra and my email is abinas@gmail.com"; let emailAddress = extractEmails( str ); let remainingString = str.replace( emailAddress, '' ); console.log( "Original string: " + str ); console.log( "Email address: " + emailAddress ); console.log( "Remaining string: " + remainingString );

about 4 years ago · Juan Pablo Isaza Report

0

Usando esta línea en el ciclo if(!match.index || !regexObj.lastIndex) break; detendrá el ciclo cuando cualquiera de las declaraciones en la cláusula if sea verdadera.

Si match.index o regexObj.lastIndex es cero, esto será cierto y el ciclo se detendrá, y esto sucederá, por ejemplo, si hay una coincidencia para el primer carácter, ya que el índice será 0.

También puede cambiar el orden de los patrones, poniendo primero el más específico. Debido a que el primer carácter del correo electrónico también coincidirá con [az] , de lo contrario, el correo electrónico no coincidirá.

Tenga en cuenta que debe omitir los anclajes ^ y $ del correo electrónico o, de lo contrario, el correo electrónico solo coincidirá si es la única cadena.

 let str = "I am abinas patra and my email is abinas@gmail.com" let patterns = [ "[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,4}", "[az]" ]; let regexObj = new RegExp(patterns.join("|"), "gmi"); let match, indicesArr = []; while ((match = regexObj.exec(str))) { let obj = { start: match.index, end: regexObj.lastIndex } indicesArr.push(obj); } console.log(indicesArr)

about 4 years ago · Juan Pablo Isaza Report

0

Probé con for loop para obtener todas las coincidencias con respecto a cualquier orden.

 let str = "I am abinas patra and my email is abinas@gmail.com" let patterns = [ "[az]", "[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,4}" ]; let match, indicesArr = []; for(let i=0;i<patterns.length; i++){ let regexObj = new RegExp(patterns[i], "gmi"); while ((match = regexObj.exec(str)) !== null) { let obj = { start: match.index, end: regexObj.lastIndex } indicesArr.push(obj); } } console.log(indicesArr)

Salvadera

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!