Estoy tratando de crear un componente funcional que básicamente convierta los caracteres ^ y _ en una cadena en subguiones y superguiones. Aquí hay unos ejemplos.
'example_3' -> <h1>example<sub>3<sub/><h1/>debe comenzar una etiqueta en '_' o '^' y cerrar la etiqueta en el siguiente carácter que no sea un número.
'another_1234Example' -> <h1>another<sub>1234<sub/>Example<h1/>también debería poder trabajar para cualquier cantidad de números
'something^2else_34' -> <h1>something<sup>2<sub/>else<sub>34<sub/> <h1/>Solución 1 (más complicada):
const string = "another_1234Example_348jiwf_342"; console.log( (string.trim() + " ") .split("_") .join("<sub>") .split(/(?<=<sub>\d+)(?!\d)/g) .join("</sub>") ); Dividir _ esto devolverá una matriz, únase a un <sub> después de eso. Luego verifique con expresiones regulares si coincide con un número con un inicio <sub> .
Enlace a la expresión regular: https://regex101.com/r/RFkEQa/1
Solución 2 (recomendado):
Es mejor usar replace para este tipo de cosas. En referencia a esta publicación: https://stackoverflow.com/a/50463993/8273193
const string = "another_1234Example_348jiwf_342"; console.log(string.replace(/(_\d+)/g, "<sub>$&</sub>").replace(/_/g, ""));