modelinde başarısız oluyor. Tüm gün bununla güvendim ve yanlış bir şey yapıp yapmadığımı veya Chrome'un JavaScript altyapısında bir hata tespit ettiğimi anlayamıyorum . Küresel bayrağa sahip bir RegExp
nesnesine yapılan art arda yapılan çağrıların, aynı girdi dizesi için tutarsız sonuçlar döndürdüğü anlaşılıyor. Aşağıdaki işlevi ile test ediyorum:RegExp testine yapılan art arda yapılan çağrılar, global seçenek
function testRegex(pattern, array) {
document.writeln('Pattern = ' + pattern + ', Array = ' + array + '<br/>');
for (var ii = 0; ii < array.length; ii++) {
document.writeln(ii + ', ');
document.writeln(array[ii] + ', ');
document.writeln(pattern.test(array[ii]) + '<br />');
}
document.writeln('<br/>');
}
Ben desen ve dizeleri çeşitli diziler olarak /a/g
ile işlevini çağırdığınızda, ben bildiğim kadarıyla söyleyebilirim yanlış birçoğu aşağıdaki sonuçları almak:
// EXPECTED: True
// ACTUAL: True
testRegex(/a/g, ['a']);
// EXPECTED: True, True
// ACTUAL: True, False
testRegex(/a/g, ['a', 'a']);
// EXPECTED: True, True, True
// ACTUAL: True, False, True
testRegex(/a/g, ['a', 'a', 'a']);
// EXPECTED: True, False, True
// ACTUAL: True, False, True
testRegex(/a/g, ['a', 'b', 'a']);
// EXPECTED: True, True, True, True
// ACTUAL: True, False, True, False
testRegex(/a/g, ['a', 'a', 'a', 'a']);
// EXPECTED: True, False, False, True
// ACTUAL: True, False, False, True
testRegex(/a/g, ['a', 'b', 'b', 'a']);
Ben dizeleri aynı diziler ile aynı işlevi çağırır, ancak desen olarak /a/
geçmesi
bir şey eksik:
// EXPECTED: True
// ACTUAL: True
testRegex(/a/, ['a']);
// EXPECTED: True, True
// ACTUAL: True, True
testRegex(/a/, ['a', 'a']);
// EXPECTED: True, True, True
// ACTUAL: True, True, True
testRegex(/a/, ['a', 'a', 'a']);
// EXPECTED: True, False, True
// ACTUAL: True, False, True
testRegex(/a/, ['a', 'b', 'a']);
// EXPECTED: True, True, True, True
// ACTUAL: True, True, True, True
testRegex(/a/, ['a', 'a', 'a', 'a']);
// EXPECTED: True, False, False, True
// ACTUAL: True, False, False, True
testRegex(/a/, ['a', 'b', 'b', 'a']);
Yukarıdaki kod bir çalışma örnek oluşturduk? Kalıp küresel olup olmadığına bakılmaksızın, sonuç verilen diziler dizisi için aynı olmamalıdır. Ben öncelikle Chrome'da çalışıyoruz, Not, ancak test döngü değiştirirseniz aşağıdaki gibi Firefox 4 ve IE 8.
İle başlayan küresel seçeneği kullanılarak neden, ama benim RegExp gibi, ben bir ara adım saplanıp sonunda replace' 'de RegExp kullanmaktı bu sabah yola çıkıp Amacım, . – FishBasketGordo