thể trùng lặp:
Javascript regex returning true.. then false.. then true.. etctại sao regex.test javascript của tôi() cho kết quả xen kẽ
var r = /\d/g;
var a = r.test("1"); // will be true
var b = r.test("1"); // will be false
console.log(a == b); // will be false
Xin giải thích cho tôi tại sao kết quả của r.test ("1 ") thay thế bằng mỗi cuộc gọi?
Tôi đã có thể giải quyết được vấn đề tôi đang gặp phải bằng cách xóa công cụ sửa đổi g. Tuy nhiên tôi vẫn muốn hiểu tại sao điều này xảy ra.
cảm ơn bạn! Tôi tìm thấy một số chi tiết hơn nữa giải thích rằng .test về cơ bản là viết tắt của .exec()! = Null, và nó là .exec() lưu trữ lastIndex cho cuộc gọi tiếp theo. (http://www.regular-expressions.info/javascript.html) Điều kỳ lạ là ngay cả khi được cung cấp các chuỗi khác nhau cho mỗi cuộc gọi, điều tương tự cũng xảy ra. Liệu lastIndex không đặt lại nếu nó được gọi trên một chuỗi khác nhau? –
Không, vì 'lastIndex' là thuộc tính của regex, không phải chuỗi. Trong Perl, ngược lại, nó được liên kết với chuỗi (thuộc tính 'pos'), trong khi trong Java nó được duy trì bởi đối tượng Matcher. 'lastIndex' là một nguồn gây thất vọng nhiều: http://blog.stevenlevithan.com/archives/fixing-javascript-regexp –