RegEx найти слово с одной цифрой - PullRequest
1 голос
/ 27 марта 2019

Мне нужно обнаружить слова, которые имеют специальные символы @ # $ и имеют менее 2 цифр.Например, «ab3c», «a @ bc», «a @ 1c», «4», «a2» и т. Д. Хотя первая часть проста, я не уверен насчет второй части.Любая помощь будет высоко ценится.

Спасибо!

Ответы [ 3 ]

1 голос
/ 27 марта 2019

Если поддерживается положительный прогноз и вы не хотите сопоставлять пустые строки, вы можете использовать:

^(?!(?:[^\d\s]*\d){2})[\w@#$]+$

Пояснение

  • ^ Начало строки
  • (?! Отрицательный взгляд вперед, чтобы утверждать, что прямо справа не является
    • [^\d\s]* Совпадение 0+ раз не цифра или символ пробела, затем совпадение с цифрой
  • ){2} Закрыть отрицательный прогноз и повторить 2 раза, потому что в случае успеха утверждение не пройдет
  • [\w@#$]+ Соответствие 1+ раз любому из перечисленных вкласс символов
  • $ Конец строки

Regex101 demo

Если у вас есть несколько слов, вы меняете ( demo) привязки ^ и $ к границам слов \b

1 голос
/ 27 марта 2019

Чтобы соответствовать 0 или 1 цифре в строке, вы можете использовать:

^\D*\d?\D*$
0 голосов
/ 27 марта 2019

Регулярное выражение немного длинное, но оно работает.

^[A-Za-z\@\#\$]*\d{0,1}[A-Za-z\@\#\$]*$

Демо здесь: https://regex101.com/r/wlebTZ/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...