1. JavaScript / Говнокод #14223

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $.validator.addMethod("phoneNumber",
            function(value, element) {
                 var letterNumber = /^[a-zA-Z]+$/;
                if (value.match(letterNumber)) {
                    return false;
                }
    
                var phoneString = value.replace(/\D/g, '');
                return phoneString.length == 0 || phoneString.length >= 11;
            });

    данная кучка "валидировала" телефонный номер

    Запостил: Tessen, 13 Декабря 2013

    Комментарии (3) RSS

    • В первой проверке if (value.match(letterNumber)) { в случае невалидного номера функция возвращает false.
      А в return phoneString.length == 0 || phoneString.length >= 11; при невалидном номере функция возвращает true, а при валидном - false.

      Валидировали, валидировали, да не вывалидировали.
      Ответить
      • воистину, не так страшен джаваскрипт, как люди на нем пишущие.
        1) в первом регэкспе вообще проводится проверка не является ли ВЕСЬ ввод единым, монолитным блоком латинских (!) букв без единого пробела или тирэ
        2) во втором регэкспе все символы отличные от цифр удаляются из строки после чего ее длина сравнивается с 0 или 11
        как раз последний return в этой функции - единственное что работает хотя бы приблизительно как задумывалось (телефон отсутствует либо в нем есть хотя бы 11 цифр)
        все остальное здесь - бред сивой кобылы, первая проверка видимо писалась под особо тяжелыми веществами, а "вырезание" всего кроме цифр из строки (подозреваю для того чтобы можно было ставить в номере -) заодно позволяет проходить валидацию на "телефонный номер" всякой хрени вроде "кукареку" (убивается реплейсом в пустую строку проходящую проверку в return благодаря полному отсутствию цифр) или любой хрени снабженной как минимум 11ю цифрами (1а2б3в...)
        Ответить
    • Вместо одного простого регэкса наподобие ^\d{11}$ нагородили целую кучу не пойми чего, да еще и нерабочего :)
      Ответить

    Добавить комментарий