Ahora que Javascript tiene retrospectiva (a partir de ES2018 ), en entornos más nuevos, puede evitar grupos por completo en situaciones como estas. Más bien, mire hacia atrás para lo que viene antes del grupo que estaba capturando, y busque para después, y reemplace con solo !NEW_ID!
:
const str = 'name="some_text_0_some_text"';
console.log(
str.replace(/(?<=name="\w+)\d+(?=\w+")/, '!NEW_ID!')
);
Con este método, la coincidencia completa es solo la parte que necesita ser reemplazada.
(?<=name="\w+)
- Mire hacia atrás name"
, seguido de caracteres de palabras (¡afortunadamente, las miradas hacia atrás no tienen que tener un ancho fijo en Javascript!)
\d+
- Haga coincidir uno o más dígitos: la única parte del patrón que no está en una búsqueda, la única parte de la cadena que estará en la coincidencia resultante
(?=\w+")
- Buscar caracteres de palabra seguidos de "
`
Tenga en cuenta que mirar atrás es bastante nuevo. Funciona en versiones modernas de V8 (incluyendo Chrome, Opera y Node), pero no en la mayoría de los otros entornos , al menos todavía no. Por lo tanto, si bien puede usar mirar hacia atrás de manera confiable en Node y en su propio navegador (si se ejecuta en una versión moderna de V8), todavía no es lo suficientemente compatible con clientes aleatorios (como en un sitio web público).