Это должно работать в любом двигателей регулярного выражения (RE). В мире PCRE есть более приятный синтаксис, но я предпочитаю, чтобы мой мог работать где угодно:
^[A-Za-z][A-Za-z0-9]*$
Обычно первый символ должен быть буквенным, за которым следует ноль или более буквенно-цифровых символов. Начальный и конечный теги используются для обеспечения соответствия всей строки. Без них вы можете соответствовать AB12
строки "@@@AB12!!!"
.
Полное объяснение:
^ start tag.
[A-Za-z] any one of the upper/lower case letters.
[A-Za-z0-9] any one of the upper/lower case letters or digits,
* repeated zero or more times.
$ end tag
Обновление:
Как справедливо указывает Ричард Сзалай, это только ASCII (или, точнее, любая схема кодирования, в которой группы A-Z, a-z и 0-9 являются смежными) и только для "английских" букв.
Если вам нужны действительно интернационализированные RE (только вы знаете, является ли это требованием), вам необходимо использовать один из более подходящих механизмов RE, таких как PCRE, упомянутый выше, и убедиться, что он скомпилирован для режима Unicode. Затем вы можете использовать «символы», такие как \p{L}
и \p{N}
для букв и цифр соответственно. Я думаю, что RE в этом случае будет:
^\p{L}[\pL\pN]*$
но я не уверен. Я никогда не использовал RE для нашего интернационализированного программного обеспечения. См. здесь , чтобы узнать больше о PCRE.