У меня есть приложение для отправки TAN пользователям через SMS. У нас уже есть API для отправки SMS на номер мобильного телефона. Поэтому я должен убедиться, что это правильный номер мобильного телефона. Под моим регулярным выражением:ASP.NET Regex для проверки номера мобильного телефона
function validateMobile(str) {
var filter = /^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$/;
if (!filter.test(str)) {
alert('Please provide a valid mobile phone number');
return false;
}
return true;
}
Он не принимает символы, только число и '+' разрешены. Пользователи могут вводить, например, + 49176xxxxxxxx или 0176xxxxxxxx (без кода страны)
Но это регулярное выражение серьезно испорчено. Пользователи могут вводить любые цифры, например. 1324567982548, это регулярное выражение также возвращает true. Я думал о том, чтобы проверить длину текстового поля, он будет работать, но пока это не подходящее решение.
Есть ли другое лучшее регулярное выражение или способ проверить более конкретный номер мобильного телефона?
Заранее спасибо.
решаемые
Я решил это с новым регулярным выражением:
var filter = /^(\+49\d{8,18}|0\d{9,18})((,\+49\d{8,18})|(,0\d{9,18}))*$/;
или как mzmm56 предлагается ниже:
var filter = /^(?:(\+|00)(49)?)?0?1\d{2,3}\d{8}$/;
Оба одинаково хорошо.
Эй, спасибо. оно работает. Кроме того, я пришел с другим регулярным выражением, и он работал как ваш var filter =/^ (\ + 49 \ d {8,18} | 0 \ d {9,18}) ((, \ + 49 \ d {8,18}) | (, 0 \ d {9,18})) * $ /; – Ragnarsson
отлично-рад, что это сработало – mzmm56