Мне нужно обнаружить слова, которые имеют специальные символы @ # $ и имеют менее 2 цифр.Например, «ab3c», «a @ bc», «a @ 1c», «4», «a2» и т. Д. Хотя первая часть проста, я не уверен насчет второй части.Любая помощь будет высоко ценится.
Спасибо!
Если поддерживается положительный прогноз и вы не хотите сопоставлять пустые строки, вы можете использовать:
^(?!(?:[^\d\s]*\d){2})[\w@#$]+$
Пояснение
^
(?!
[^\d\s]*
){2}
[\w@#$]+
$
Regex101 demo
Если у вас есть несколько слов, вы меняете ( demo) привязки ^ и $ к границам слов \b
\b
Чтобы соответствовать 0 или 1 цифре в строке, вы можете использовать:
^\D*\d?\D*$
Регулярное выражение немного длинное, но оно работает.
^[A-Za-z\@\#\$]*\d{0,1}[A-Za-z\@\#\$]*$
Демо здесь: https://regex101.com/r/wlebTZ/1/