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

304
Views
¿Menor o mayor que los caracteres, excepto las etiquetas html?

Necesito reemplazar menos o más que ( < > ) caracteres, pero mantengo las etiquetas html (las etiquetas simples funcionarán como <b>text</b> sin argumentos). Así que la entrada a continuación:

 <b>> 0.5 < 0.4</b> - <>

Debiera ser:

 <b>&gt; 0.5 &lt; 0.4</b> - &lt;&gt;

Todo lo que logré encontrar y editar ahora es esta expresión:

 <\/?[az][a-z0-9]*[^>\s]*>|([<>])

Agrupa los caracteres < y > pero también coincide con las etiquetas que no necesito reemplazar

UPD: Gracias a @Sree Kumar , aquí están las funciones finales:

 String.prototype.replaceAt = function (index, char) { let arr = this.split(''); arr[index] = char; return arr.join(''); }; String.prototype.escape = function () { let p = /(?:<[a-zA-Z]+>)|(?:<\/[a-zA-Z]+>)|(?<lt><)|(?<gt>>)/g, result = this, match = p.exec(result); while (match !== null) { if (match.groups.lt !== undefined) { result = result.replaceAt(match.index, '&lt;'); } else if (match.groups.gt !== undefined) { result = result.replaceAt(match.index, '&gt;'); } match = p.exec(result); } return result; };
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Pruebe esta expresión regular:

 <(?!\/?\w+>)|(?<!<\w+|<\/\w+)>

Explicación

  • <(?!\/?\w+>) encuentra todos los símbolos '<' (excepto en las etiquetas)
  • (?<!<\w+|<\/\w+)> encuentra todos los símbolos '>' (excepto en las etiquetas)

Puedes usarlos por separado:

 let str = '<b>> 0.5 < 0.4</b> - <>'; let lessThen = /<(?!\/?\w+>)/g; let greaterThen = /(?<!<\w+|<\/\w+)>/g; str = str.replace(lessThen, '&lt;'); str = str.replace(greaterThen, '&gt;'); console.log(str); // <b>&gt; 0.5 &lt; 0.4</b> - &lt;&gt;

¡NÓTESE BIEN! Solo encuentra los símbolos '<' y '>' entre etiquetas. No verifica que html sea válido. Para texto como ese <a></b> no encontrará ninguna coincidencia.

about 4 years ago · Juan Pablo Isaza Report

0

Aquí hay una manera de hacerlo usando grupos con nombre. Es decir, nombre su grupo deseado y búsquelo. Puede ser null o undefined a veces porque no coincidía. Por lo tanto, tendrá que agregar el cheque nulo.

Observe (?<B>...) que rodea al grupo "deseado". Además, observe el cheque nulo en la quinta línea.

 let p = /(?:<[a-zA-Z]+>)|(?:<\/[a-zA-Z]+>)|(?<B>[<>])/g let input = '<b>> 0.5 < 0.4</b> - <>'; let match = p.exec( input ); while( match !== null) { if( match.groups.B !== undefined ) console.log( match.groups.B ); match = p.exec( input ) }
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!