Регулярное выражение для строки без пробелов и минимум с одной цифрой

Надо написать регулярное выражение, удовлетворяющее условию:

  1. В строке нет пробелов.
  2. В строке есть минимум одна цифра.

Вот такой вариант

^\S*[0-9]{1,}$ в принципе работает, но не пропускает строки типа 123ABC. Прошу подсказки.


Ответы (2 шт):

Автор решения: Алексей Р

Сочетаем строку из не-пробелов \S+ с позитивным просмотром вперед с цифрой (?=.*\d)

^(?=.*\d)\S+$

Демо

→ Ссылка
Автор решения: Wiktor Stribiżew

^\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* - ноль и более непробельных символов
  • $ - конец строки.
→ Ссылка