Ответы пользователя по тегу Регулярные выражения
  • Как разделить строку в массив на текст и числа в JS?

    @ksnk
    Если адрес совсем в свободной форме, то лучше доверить разбор адреса профессионалам Яндексу. У него есть Map api с функцией геокодирования https://yandex.ru/dev/maps/jsapi/doc/2.1/dg/concep...
    В песочнице можно поиграться с тем, как расшифровываются кусочки адреса, введенного пользователем https://yandex.ru/dev/maps/jsbox/2.1/direct_geocode/
    Например про адрес из первого сообщения была вот такая информация
    Тип геообъекта: house
    VM75:65 Название объекта: 1-й Волконский переулок, 10
    VM75:66 Описание объекта: Россия, Москва
    VM75:67 Полное описание объекта: Россия, Москва, 1-й Волконский переулок, 10
    VM75:72 
    Государство: Россия
    VM75:73 Населенный пункт: Москва
    VM75:74 Адрес объекта: Россия, Москва, 1-й Волконский переулок, 10
    VM75:75 Наименование здания: -
    VM75:76 Номер здания: 10
    Правда работа с api ограниченно бесплатная, но для небольшого сайта с умеренным трафиком очень даже.
    Ответ написан
  • Как составить регулярное выражение?

    @ksnk
    Если нужно регулярки - вот так можно
    let m= document.body.innerHTML.match(/(?=[^>]*name="email")<input[^>]+value="([^"]+)"/is);
    console.log(m[1]);

    Регулярка из 2-х половин. Вторая определяет элемент и выковыривает его value, первая проверяет, что name у этого элемента правильный. Расчет на то, что кавычки всегда будут двойными.
    Через Дом, конечно, лучше. На кавычки закладываться не придется.
    Ответ написан
    Комментировать
  • Как написать такой regexp для js?

    @ksnk
    Регулярки по таким идиотским условиям пишутся тупо. Используются маски предварительного просмотра look ahead - (= и (!

    - минимум 7 символов (?=.{7})
    - максимум 64 символа (?!.{65})
    - допускается только латиница - самое идиотское. Требуется уточнение, по немецки, там или иероглифами, значит, можно ? Будем считать, что русские буквы нельзя - (?!.*[ёЁа-я])
    - не должен содержать... - (?!.*[!@#$%^&*? ])
    - нельзя ввести 4 одинаковых символа. Тоже то еще условие... 4 запятые подряд, значит, можно ? Будем считать, что любые 4 подряд нельзя - (?!.*(.)\1\1\1)
    - комбинации qwerty - (?!.*qwert)
    - комбинации 1234 - (?!.*1234)
    - не совпадает со словом password - (?!password$)
    - не должен содержать пробелы (?!.*\s)
    Итого - объединяем и тадамс!
    let reg=/^(?=.{7})(?!.{65})(?!.*[ёЁа-я])(?!.*[!@#$%^&\*\?])(?!.*(.)\1\1\1)(?!.*qwert)(?!.*1234)(?!password$)(?!.*\s).*/i

    Можно обойтись меньшим количеством букв, но стоит ли. Читабельность в этом деле ариважна.

    Второй пример сам сделаешь ?
    Ответ написан
    Комментировать
  • Как правильно настроить проверку формы с использованием регулярного выражения?

    @ksnk
    Может - проще на email проверять ? в телефоне вряд ли появится символ @, а в почте - он обязателен.
    if (/@/.test(val)) { 
    ...
    Ответ написан
    Комментировать
  • Как мне убрать все эмодзи?

    @ksnk
    .../iu' ...

    просто добавь ключик U
    Ответ написан
    Комментировать
  • Где ошибка preg_replace (): Неизвестный модификатор 'g'?

    @ksnk
    Не надо ничего предпочитать. Нужно использовать правильный мед...
    preg_replace("/href=\"".preg_quote($url,'/')."\"/i", "href=\"$base/$url\"", $html);
    Ответ написан
    2 комментария
  • Как сделать правильно regex?

    @ksnk
    обычные правила просто не замечают GET-параметры. Нужно отдельно добавлять {QUERY_STRING}
    RewriteCond %{QUERY_STRING} p=1 [NC]
    Ответ написан
    Комментировать