Tôi thực sự phát điên vì điều này và tôi đã dành một khoảng thời gian không cân xứng để cố gắng tìm ra những gì đang xảy ra ở đây. Vì vậy, hãy giúp tôi một tay =)
Tôi cần thực hiện một số đối sánh RegExp của các chuỗi trong JavaScript. Thật không may, nó cư xử rất kỳ lạ. Mã này:
var rx = /(cat|dog)/gi;
var w = new Array("I have a cat and a dog too.", "There once was a dog and a cat.", "I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.");
for (var i in w) {
var m = null;
m = rx.exec(w[i]);
if(m){
document.writeln("<pre>" + i + "\nINPUT: " + w[i] + "\nMATCHES: " + m.slice(1) + "</pre>");
}else{
document.writeln("<pre>" + i + "\n'" + w[i] + "' FAILED.</pre>");
}
}
Trả về "cat" và "dog" cho hai phần tử đầu tiên, như nó phải như vậy, nhưng sau đó một số- exec()
cuộc gọi bắt đầu trả về null
. Tôi không hiểu tại sao.
Tôi đã đăng một Fiddle ở đây , nơi bạn có thể chạy và chỉnh sửa mã.
Và cho đến nay tôi đã thử điều này trong Chrome và Firefox.
Chúc mừng!
/ Christofer
"I have a cat and a dog too."
, có vẻ như