Reemplazar es más peligroso que igualar
Una búsqueda incorrecta puede perder resultados. Un reemplazo incorrecto puede reescribir todos los registros coincidentes. Defina qué debe coincidir, qué debe capturarse, qué resultado se requiere y qué ejemplos no deben cambiar antes de tocar datos reales.
Capture solo lo que necesita el reemplazo
| Feature | Use | Risk |
|---|---|---|
(...) | Capturar un valor | La numeración cambia cuando se insertan grupos. |
(?:...) | Grupo sin captura | No se puede utilizar en reemplazo |
(?<name>...) | captura con nombre | Requiere motor compatible |
en patrón | Coincidir con el texto capturado anteriormente | Confundido con la sintaxis de reemplazo |
$1 en reemplazo | Insertar texto capturado | Depende del reemplazo API |
Las referencias retrospectivas de patrón y reemplazo difieren
Dentro de una expresión regular JavaScript, coincide con el texto capturado anteriormente. En una cadena de reemplazo, $1 o $ inserta texto capturado. Por lo tanto, reordenar “Último, Primero” requiere capturar campos en el patrón y hacer referencia a ellos en orden inverso en el reemplazo.
Utilice opciones de búsqueda para el contexto
La mirada hacia adelante y hacia atrás afirma el texto circundante sin consumirlo. Pueden hacer coincidir un número solo antes de una unidad, excluir un prefijo protegido o insertar en un límite. Pruebe la compatibilidad con el navegador/tiempo de ejecución cuando los scripts se ejecuten en motores más antiguos.
Las banderas cambian de alcance
greemplaza todas las coincidencias.icambia la distinción entre mayúsculas y minúsculas.mcambia anclajes de línea.spermite hacer coincidir los terminadores de línea.uhabilita el análisis compatible con Unicode.yrealiza una coincidencia fija.
Comenzar sin g puede ser un freno de seguridad útil.
Crear una matriz de prueba
Entradas y salidas esperadas.
Entrada similar que no debe cambiar.
Inicio/fin y separadores.
Acentos, guiones, emoji.
Faltan delimitadores y campos adicionales.
Casos de fracaso prolongados para dar marcha atrás.
Utilice el probador de expresiones regulares de Jivaro
- Abra Regex Tester & Reemplace la herramienta.
- Utilice texto de muestra representativo.
- Cree expresiones y banderas de forma incremental.
- Inspecciona cada partido y grupo.
- Agregue reemplazo y revise la vista previa completa.
- Cree pruebas de coincidencias requeridas y de no coincidencias requeridas.
- Exporte el patrón con suposiciones.
- Ejecute una copia y revise una diferencia.
Trampas comunes
| Task | Trap |
|---|---|
| Reordenar campos | Delimitador dentro de los datos citados |
| Normalizar espacios en blanco | Destruir sangrías o saltos de línea |
| Cambiar el nombre de los identificadores | Cambiar subcadenas dentro de nombres más largos |
| Convertir fechas | Regex no puede probar que todas las fechas del calendario sean válidas |
| Coincidencia de HTML/URL | Las gramáticas complejas requieren analizadores |
Rendimiento e implementación
Evite cuantificadores ambiguos anidados que provoquen un retroceso catastrófico. Utilice clases restringidas y pruebe entradas largas que no coincidan. Antes de la implementación, mantenga una copia de seguridad, registre el motor y las banderas, cuente las coincidencias, revise una diferencia y valide los datos transformados con su analizador o pruebas reales.
Utilice funciones de reemplazo para lógica condicional
Una cadena de reemplazo estática es apropiada cuando la salida es una disposición fija de capturas. Cuando la salida depende de la conversión numérica, reglas de casos, validación o grupos opcionales, una devolución de llamada de reemplazo suele ser más clara. La devolución de llamada recibe la coincidencia completa, las capturas, el desplazamiento y la cadena fuente, lo que permite pruebas y código explícito en lugar de una expresión de reemplazo ilegible.
Mantenga la lógica empresarial compleja fuera de la propia expresión regular. Utilice la expresión para localizar y analizar una estructura restringida y luego manejar las decisiones en código ordinario.
Documentar el patrón como un pequeño programa.
Almacene el propósito, el motor, las banderas, la entrada de muestra, la salida esperada, los casos negativos y las limitaciones conocidas junto a la expresión regular. Un patrón sin contexto es difícil de revisar y peligroso de reutilizar. Para las transformaciones de producción, incluya recuentos de coincidencias y una suma de verificación o versión de la entrada/salida para que se pueda auditar el cambio.
Preguntas frecuentes
\1 es una referencia hacia atrás dentro del patrón; $1 inserta una captura en una cadena de reemplazo JavaScript.
Utilice (?:...) para la agrupación necesaria por alternancia o cuantificadores cuando el valor no se requiera más adelante.
Utilice límites, pruebas negativas, recuentos de coincidencias, una prueba de primera coincidencia y una diferencia revisable.
Para datos anidados o basados en gramática, como HTML, JSON arbitrarios, lenguajes de programación y CSV complejos.
Aplicaciones relacionadas Jivaro
Prueba expresiones regulares de JavaScript en un worker aislado, inspecciona grupos de captura, previsualiza reemplazos, ejecuta casos de prueba y copia fragmentos para distintos lenguajes localmente.
Abrir aplicaciónFuentes y referencias
- Expresiones regularesMDN Web Docs · referencia
- Grupos y referencias anterioresMDN Web Docs · referencia
- Grupo de capturaMDN Web Docs · referencia
- Aserción de búsqueda retrospectivaMDN Web Docs · referencia
- Herramienta de reemplazo y probador RegexJivaro · propio

