Похоже, вы ищете 2 различных условия. Почему бы не разбить его на 2 выражения? Это может быть проще и более читабельно.
var str = user_string;
if ('0' != str && str.matches(/^\d{1,5}$/) {
// code for match
}
или следующее, если строка 0 также недействительна
var str = user_string;
if (!str.matches(/^0+$/) && str.matches(/^\d{1,5}$/) {
// code for match
}
То, что вы можете сделать все это в одном регулярном выражении, не означает, что вы должны это делать.