Когда вы объявляете свое регулярное выражение как новый объект RegExp, вы должны использовать двойные экранирующие символы обратной косой черты (вместо одной обратной косой черты, когда вы просто присваиваете литерал как var a = /\w/i;
);
Итак, ваш код должен работать после некоторой корректировки reg exp:
var loca = document.location.href;
var pattern = new RegExp("[\\w]*(?=\\.php)","i");
// Get document location and specific page.
if(pattern.test(loca)) {
activate(pattern.exec(loca));
} else {
activate("home");
}
// Activate a button
function activate(bName) {
$(".button[name=" + bName + "]").addClass('active')
}
И, как уже было сказано, легче присвоить класс вашему активному элементу.