Un simple script de prueba:expresiones regulares en javascript falla cada otra vez con el aporte idéntica
<script type="text/javascript">
var reg = new RegExp('#([a-f0-9]{3})$', 'gi');
for (var i = 0; i < 10; i++) {
console.log(reg.exec('#fff'));
}
</script>
salida de la consola:
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
¿Por qué todos los demás nulo resultado cuando la entrada se mantiene constante?
$ ancla el patrón al final de la línea. Sin eso, algo como '#fff blah blah blah' también coincidiría. Por supuesto, en este momento, la expresión regular coincidirá con 'blah blah blah # fff', ya que no está anclada al inicio de la línea con'^' –