A simple test script:
<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>
Console output:
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
Why is every other result null when the input remains constant?