Probar expresiones regulares también exige casos que fallen
Encontrar una coincidencia es un inicio, no demuestra que el patrón exprese tu intención. Las buenas pruebas incluyen textos casi correctos que deben rechazarse.
Expresa primero la regla con palabras
¿Buscas un código dentro de un párrafo o validas toda la línea? Encontrar un fragmento correcto en una entrada inválida puede parecer éxito sin cumplir la necesidad.
Usa ejemplos pequeños de caracteres, longitud y límites. En un texto largo cuesta ver por qué funciona o falla. Un patrón no impone reglas de negocio que no escribiste.
Las banderas y la escritura cambian el resultado
g solicita varias coincidencias e i cambia el tratamiento de mayúsculas. En JavaScript, \w no define las palabras de todas las escrituras; pueden necesitarse propiedades Unicode con u.
ToolRoof prueba sintaxis JavaScript y g, i, m, s, u. Las posiciones son unidades UTF-16, no siempre símbolos visibles. No presupongas igual comportamiento en otro motor.
Referencias: MDN — JavaScript regular expressions, flags and Unicode
Los ejemplos no certifican seguridad
Incluye un caso sin coincidencia y otros en los límites mínimo y máximo previstos. Prueba varias líneas cuando correspondan al uso real.
El procesamiento está acotado y se muestran hasta 200 coincidencias; alcanzar el límite no indica que sean todas. No certifica rapidez o seguridad para cualquier entrada, ni ejecuta código de sustitución o texto enviado.
Ejemplo: 2 códigos aceptados y 2 casos cercanos
En ID-17 ID-204 ID-7 XID-99, el patrón \bID-\d{2,3}\b con g encuentra ID-17 e ID-204. ID-7 es demasiado corto; el límite de palabra impide empezar dentro de XID-99.
Sin g se devuelve solo la primera coincidencia. La regla describe estos códigos de ejemplo: no acredita identificadores existentes, permisos de acceso ni otros requisitos del sistema.