Это полностью неправильный способ сделать это.
Чтобы ответить на вопрос, регулярное выражение совпадает с частью вашей строки. Строка 83
проходит путем сопоставления 8
.
Вам нужно закрепить свое регулярное выражение, поставив ^(
в начале и )$
в конце.
правильный способ сделать это состоит в том, чтобы создать массив действительных чисел и сравнить, используя parseInt
.
Например:
var validNumbers = [ 8, 9, 37, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 110 ];
if (validNumbers.indexOf(parseInt(num, 10)) >=0 ) {
//Match
}
Для IE вам потребуется функция indexOf
:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(needle) {
for(var i = 0; i < this.length; i++) {
if(this[i] === needle) {
return i;
}
}
return -1;
};
}