Замена регулярным выражением [РЕШЕНО]

Тема в разделе "JavaScript", создана пользователем m1ko, 30 окт 2015.

Модераторы: ZiX
  1. m1ko

    m1ko Создатель

    Регистр.:
    15 авг 2010
    Сообщения:
    42
    Симпатии:
    3
    Помогите решить такую штуку,
    есть номера внутренние и внешние
    внутр xxxx
    внешн 8xxxxxxxxxx
    Нужно сделать сделать подстановку 8 если человек вдруг написал номер без 8 или +7 т.е. проверить, если символов 10 не больше не меньше, добавить 8, можно проверить конечно if val == 10 и присвоить спереди 8 но это не красиво. Как сделать лучше?
     
  2. javx

    javx

    Регистр.:
    28 авг 2015
    Сообщения:
    521
    Симпатии:
    239
    /^[0-9]{10}$/ - 10 цифр
    /^8[0-9]{9}$/ 8ка в начале и + еще 9 символов.
    /^\+/ найдет +

    Исходя из этого делай условия какие тебе нужно.
    http://javascript.ru/basic/regular-expression+
     
    m1ko нравится это.
  3. ZiX

    ZiX Коддинг, Парсинг

    Moderator
    Регистр.:
    9 июл 2011
    Сообщения:
    1.378
    Симпатии:
    563
    Есть классный сайт для составления регулярок...
    http://regex101.com
    Поупражняйтесь там.
    Есть и описания тегов регулярок итд.
     
    m1ko и javx нравится это.
  4. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    610
    Симпатии:
    348
    Код:
    if (!/^8\d{10}$/.test(str) && !/^\+7\d{10}$/.test(str)) {
    str = '8' + str;
    }
    примерно так
     
    m1ko нравится это.
  5. m1ko

    m1ko Создатель

    Регистр.:
    15 авг 2010
    Сообщения:
    42
    Симпатии:
    3
    Большое спасибо, вышло вот так вот
    Код:
    str = str.replace(/^[0-9]{10}$/ ,'8' + str);
     
  6. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    610
    Симпатии:
    348
    а так короче:
    Код:
    \d{10}
     
    m1ko нравится это.
  7. m1ko

    m1ko Создатель

    Регистр.:
    15 авг 2010
    Сообщения:
    42
    Симпатии:
    3
    мне что-то подсказывает что есть отличие между \d и [0-9] решил оставить свой вариант.

     
  8. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    610
    Симпатии:
    348
    вам подсказывает ваше незнание
    в вашем же примере написано, что и тот и другой вариант найдет цифру
    а если придерживаться чистой теорией, то почитайте о регулярках
    https://ru.wikipedia.org/wiki/Регулярные_выражения
    в частности тут:
    Код:
    Символ    Эквивалент    Соответствие
    \d       [0-9]         Цифровой символ