En la siguiente cadena de entrada:Orientación de expresiones regulares necesario para Javascript
{$foo}foo bar \\{$blah1}oh{$blah2} even more{$blah3} but not{$blarg}{$why_not_me}
Estoy tratando de igualar todas las instancias de {$SOMETHING_HERE}
que no están precedidos por una barra invertida sin escapar.
Ejemplo:
quiero que coincide {$SOMETHING}
pero no \{$SOMETHING}
.
Pero yo quiero que coincide \\{$SOMETHING}
intentos:
todos mis intentos hasta ahora coincidirá con lo que yo quiero, excepto para las etiquetas justo al lado de la otra como {$SOMETHING}{$SOMETHING_ELSE}
Aquí es lo que tengo actualmente:
var input = '{$foo}foo bar \\{$blah1}oh{$blah2} even more{$blah3} but not{$blarg}{$why_not_me}';
var results = input.match(/(?:[^\\]|^)\{\$[a-zA-Z_][a-zA-Z0-9_]*\}/g);
console.log(results);
Qué salidas:
["{$foo}", "h{$blah2}", "e{$blah3}", "t{$blarg}"]
Meta
que quieren que sea:
["{$foo}", "{$blah2}", "{$blah3}", "{$blarg}", "{$why_not_me}"]
Pregunta
Puede alguien me punto en la dirección correcta?
Soy consciente de que lo que necesito es un look-behind y que javascript no los admite. ¡Nunca antes había hecho un look falso pero verifico el enlace! – nathanjosiah
@nathanjosiah He actualizado mi respuesta con más información. – Griffin
¡Gracias por el artículo! ¡Justo lo que necesitaba! Publiqué mi solución como una respuesta. – nathanjosiah