Một kịch bản thử nghiệm đơn giản:Regex trong javascript thất bại mỗi khi khác với đầu vào giống hệt
<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>
điều khiển đầu ra:
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
["#fff", "fff"]
null
Tại sao mọi kết quả rỗng khác khi đầu vào vẫn không đổi?
$ neo mẫu ở cuối dòng. Không có điều đó, một thứ như '#fff blah blah blah' cũng sẽ khớp. Tất nhiên, tại thời điểm này, regex sẽ khớp với 'blah blah blah # fff', vì nó không được neo vào đầu dòng với'^' –