Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отлов мобильного (https://javascript.ru/forum/dom-window/57184-otlov-mobilnogo.html)

espltd 23.07.2015 09:21

Отлов мобильного
 
Всем привет! Ребята, подскажите пожалуйста, не могу допилить регулярку. Надо искать мобильные телефоны. Сделал так.

/(\+7|8)(\d{10})/


Эта регулярка выбирает только такие:

+79028380801;
9028380801 (вот тут номер без восьмерки, а надо как то сделать 8-ку),
и чтобы из таких 8-(922)-24-42-700, сделался такой 89222442700, тире тоже хотелось бы сразу все леквидировать.
В общем чтобы номера были однообразные 8919 и т.д. либо + 7919 и т.д., чтобы не было ни скобок ни тире. Надеюсь понятно изложил)) Спасибо заранее всем!

EmperioAf 23.07.2015 11:05

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <title>Спойлеры</title>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<style>
*{
    margin:0;
    padding:0;
    outline: 0;
}

input:hover {
    outline: none;
}

input{
    margin-left: 50px;
    margin-top: 10px;
}

input[type="text"]:first-child{
    margin-bottom: 10px;
}
input[type="button"] {
    display: block;
    width: 150px;
    height:30px;
    margin-bottom: 10px;
}
</style>
</head>
<body>
    <input name="telnumber"  type="text">
    <input name="telbutton"  type="button" value='Нажми меня'>
    <input name="telnumberresult"  type="text">
    <script>
    var button = document.getElementsByName("telbutton")[0];
    button.onclick = function(){
        var telNumber = document.getElementsByName("telnumber")[0].value;
        var telNumberResultElem = document.getElementsByName("telnumberresult")[0];
        var number=telNumber.replace(/\D/gm,'');
        if (number.length>11 || number.length<10)
            alert('Вы неправильно ввели моб. телефон');
        else if((number[0]!=='8' && number[0]!=='7')&&(number.length=='11'))
            alert('Вы неправильно ввели моб. телефон');
        else telNumberResultElem.value = number;
    }
    </script>
</body>
</html>

espltd 23.07.2015 12:29

Спасибо, но вот правда у меня куча телефонов через точку с запятой, выглядит так:

+7(919)7076922;89504412323;+791543435454

как их тоже обработать?

рони 23.07.2015 12:47

Цитата:

Сообщение от espltd
;+791543435454

11 а не 10 ?

tysonfury2015 23.07.2015 12:59

alert(

"+71233332433434434344;87474883839399;8(757) 94-994949-4994;8-0505-99595-5885858"

.replace(/\+7/g, "8")
.replace(/\(|\)|-|\s+/g, "")

)


прогони даные по этой фигне, а потом сматчишь обычной. Если сразу матчить, будет зело сложная конструкция, что-то типа /(+7|8|)?\(?(\d-?){3}\)?(\d-?){7... ненадежно это все, да и лень мне цифры считать для образца:). Если запостишь кусок из базы с верными и неверыми случаями, полный комплект(и пометь как-нибудь верные и неверные), может напишу.

espltd 23.07.2015 13:35

ох, ну ладно! Спасибо всем на этом.


Часовой пояс GMT +3, время: 10:05.