http://jsfiddle.net/bpt33/W jaki sposób "g" w metodzie testowej RegExp działa alternatywnie?
var t = "";
var a = ["atom-required","atom-label","atom-data-type","atom-regex"];
var r = /atom\-(label|required|regex|data\-type|class|is\-valid|field\-value|error)/i;
function test(a, r){
for(var i = 0; i<a.length; i++){
t += a[i] + " => " + r.test(a[i]) + "<br/>";
}
}
test(a, r);
t += "<br/>";
a = ["atom-required","atom-label","atom-data-type","atom-regex"];
var r = /atom\-(label|required|regex|data\-type|class|is\-valid|field\-value|error)/gi;
test(a, r);
$("#results").get(0).innerHTML = t;
gdy wartość g nie jest określona, że działa poprawnie,
atom-required => true
atom-label => true
atom-data-type => true
atom-regex => true
gdy G jest określona, to działa alternatywnie
atom-required => true
atom-label => false
atom-data-type => true
atom-regex => false
Na marginesie nie ma potrzeby ucieczki od '-' - jest to wyjątkowe w klasie postaci. – georg
możliwy duplikat [Dlaczego RegExp z globalną flagą w JavaScript daje złe wyniki?] (Http://stackoverflow.com/questions/1520800/why-regexp-with-global-flag-in-javascript-give-wrong-results) – Bergi