• Как использовать следующий ключ объекта?

    E1ON
    @E1ON Куратор тега JavaScript
    web, gamedev, anime, science
    const obj = {
     '1': QWE,
     '5': ASD,
     '7' : ZXC
    }
    
    const keys = Object.keys(obj).sort();
    const nextKey = keys[keys.indexOf("5")+1];
    
    console.log(obj[nextKey])
    Ответ написан
  • Какое регулярное выражение подойдет для проверки номера телефона?

    Зеленый свет для:
    +79261234567
    89261234567
    79261234567
    +7 926 123 45 67
    8(926)123-45-67
    123-45-67
    9261234567
    79261234567
    (495)1234567
    (495) 123 45 67
    89261234567
    8-926-123-45-67
    8 927 1234 234
    8 927 12 12 888
    8 927 12 555 12
    8 927 123 8 123

    ^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$
    Ответ написан
  • Какое регулярное выражение подойдет для проверки номера телефона?

    @kudry
    Тоже столкнулся с проблемой валидизации телефонных номеров.
    Телефоны берутся с участников вебинаров, на которые записываются люди из очень разных стран.
    Соответственно, со всеми предыдущими схемами возникают проблемы:
    1) а что если телефон с Украины (не +7-, а +38-)? А из Казахстана? А США (1-)? А Уганда ( +233-)? (из Уганды, правда, пока слушателей не было, но все впереди).
    2)В разных местностях приняты самые невообразимые способы разбиения телефона на группы цифр:
    8(8888)8-88-88-88 например. или 888(88)88888-888. Да и какие угодно могут возникнуть в будущем.
    Поэтому вариант с "дефолтным разбиением типа "8(888)888-88-88 ну совершенно не катит.

    Соответственно, я придумал следующий валидатор:
    1) В начале могут быть пробелы, после них может быть "+" (а может и не быть)
    2) Дальше должна идти группа цифр в количестве от 10 до 14 (мне нужны номера в международном формате; но если кому-то нужны более короткие - можно исправить диапазон длин).
    3) Поскольку я не знаю, как люди группируют цифры - до и после каждой цифры может быть один из 8 знаков ("-", " ", "_", "(", ")", ":", "=", "+"). Это значит, что между двумя цифрами могут быть любые два из этих знаков.

    В итоге получилось очень коротко и понятно )) :
    /^(\s*)?(\+)?([- _():=+]?\d[- _():=+]?){10,14}(\s*)?$/

    Съедает следующие телефоны:
    +7(903)888-88-88
    8(999)99-999-99
    +380(67)777-7-777
    001-541-754-3010
    +1-541-754-3010
    19-49-89-636-48018
    +233 205599853
    Ответ написан