Ответ - хранить в коде, так как не нужно каждый раз лезть в 2 места если логика меняется, не размазывается поведение на 2 аппликации, и все легко отслеживается в вершн контроле
str.replace(/[\s\n\t]/mg, "").replace(/,/mg, ".")
var str = '9(055)3334849';
var allow = ['055','058'];
alert((new RegExp('^\\+?9[ -]?\\(?('+allow.join('|')+')\\)?[ -]?\\d{3}[ -]?\\d{2}[ -]?\\d{2}$')).test(str));
а вот да, "донор" может настучать, но для этого и есть прокси/vpn и пр.