Если вы хотите убедиться, что там есть хотя бы один алфавитный символ c, вы можете просто использовать:
[a-zA-Z0-9., &:-]*[a-zA-Z0-9][a-zA-Z0-9., &:-]*
Это в основном ноль или более вашего текущего шаблона (слегка измененный (a) ), за которым следуют одна цифра c, а затем снова ноль или более вашего текущего паттерна. Это гарантирует отсутствие совпадения, если в строке нет одного или нескольких буквенно-цифровых символов.
Вы также можете рассмотреть возможность размещения маркеров ^
и $
на концах шаблона, если вы используете функцию регулярного выражения это позволяет частичное соответствие. Без этого вы могли бы сопоставить что-то вроде <some-invalid-character>A
. Это может не понадобиться, если вы используете функцию «полного соответствия».
(a) Модификация, согласно комментариям в другом ответе , должен переместить -
в конец регулярного выражения, чтобы он воспринимался как буквальный дефис, а не как диапазон символов.