Javascript regex.match неисправен?

Обещаю, я не вру. В этом пользовательском скрипте есть одна странная строка. это

if(rePrv.test(h)||rePrv.test(h))

Теперь, если у меня есть толькоif(rePrv.test(h)) Я иногда получаю ложное (неправильно). Однако с || я получаю правильные результаты. Это дует мой мозг. Что происходит? Может кто-нибудь объяснить? Это происходит в Firefox 8, 11 (переносной) и Chrome 17.0.

Это мой пользовательский код.

// ==UserScript==
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript==

var re=/\/?docs\/\d+/gi;
var rePrv=/\/?docs\/\d+\/private/gi;
var prvls="";
var publs="";
$('a').each(function(i, e){
    var h = $(this).attr('href');
    if(h==undefined)
        return;
    if(re.test(h)){
        if(rePrv.test(h)||rePrv.test(h)){
            prvls+="http://www.domain.com/"+h+"<br/>\n";
        }
        else {
            publs+="http://www.domain.com/"+h+"<br/>\n";
        }
    }
});

Ответы на вопрос(1)

Ваш ответ на вопрос