Регулярное выражение, после числа, нет букв?

Необходимо, чтобы регулярное выражение не срабатывало, если после числа идёт буква
пример https://regex101.com/r/wqU35y/1
нужно чтобы текст 2333a не попадал под условие
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
вариант 1: "сверхжадный поиск" - набиваем цифры в копилку, берем результат и добавляем проверку, что далее нет буквы. Здесь фишка в том, что нет бэктрекинга, цепочка цифр будет откатываться. На JS нет специального синтаксиса для "сверхжадности", но возможно в твоем языке есть.
(?=(\d+))\1(?![a-z])

вариант 2: проверка, что за цифрами не идут "цифры и далее буква"
(\d+)(?!\d*[a-z])

Навскидку, первый вариант выглядит быстрее, ибо там линейная сложность, а во втором как будто квадратичная (хотя нельзя сказать наверняка: может, механизм как-то догадается не делать влоб)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
(\d+)(?!\d*[a-z])


(\d+)(?!\d*\w$) a-z думаю можно смело поменять, ну и добавить $
на всякий
но можно еще короче
(?=\d+$)\d+
или даже
(?=\d+$).+
Думаю это может пойти за самое простое решение
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы