Если все, что вам нужно сделать, это проверить телефонные номера по указанным критериям, вы можете сначала удалить все нецифровые символы, а затем проверить с помощью RegExp.
Мало того, что это намного проще, это также намного легче понять.
// Sample data
const numbers = [
'(94) 123 345',
'(94).456.7899',
'(94)-456-7899',
'94-456-7899',
'+94 456 7899',
'94 456 7899',
'0094 456 7899',
'(94) 123',
'122 3454'
]
// The validation function
const validate = value => {
value = value.replace(/\D|(^0+)/g, '');
return /^\d{5,}$/.test(value);
}
// Tests
numbers.forEach(function(phone){
console.log(validate(phone), `"${phone}"`);
});
Объяснение RegExp:
/\D|(^0+)/g
\D
соответствует всем не цифрам (^0+)
совпадает, если есть хотя бы один ведущий 0 символ.
/^\d{5,}$/
Совпадениякогда строка начинается и заканчивается цифрой, и когда строка состоит не менее чем из 5 цифр, без каких-либо цифр.