Регулярное выражение для строки без пробелов и минимум с одной цифрой
Надо написать регулярное выражение, удовлетворяющее условию:
- В строке нет пробелов.
- В строке есть минимум одна цифра.
Вот такой вариант
^\S*[0-9]{1,}$
в принципе работает, но не пропускает строки типа 123ABC.
Прошу подсказки.
Ответы (2 шт):
Сочетаем строку из не-пробелов \S+ с позитивным просмотром вперед с цифрой (?=.*\d)
^(?=.*\d)\S+$
^\S*[0-9]{1,}$ находит строки, которые начинаются с ноля и более непробельных символов, за которыми есть 1 и более цифр, которыми строка и заканичивается (т.е. валидные строки выглядят как DGE_ewq::323, 111111, а 123a или A12. не проходят.)
Используйте
^[^\s\d]*\d\S*$
См. пример работы регулярного выражения (69 шагов, ^(?=.*\d)\S+$ находит те же совпадения за 109 шагов из-за .*\d, если вы хотите использовать блок предварительного просмотра вперёд, используйте ^(?=\D*\d)\S+$).
Подробности:
^- начало строки[^\s\d]*- ноль и более символов, не являющихся пробельными символами и цифрами\d- цифра\S*- ноль и более непробельных символов$- конец строки.