[1-9ondOND][123][0-9]
Я пропустил ^
и $
(начало и конец строковых маркеров), потому что вы сказали, что у вас будут трехсимвольные строки, но нет ничего плохого в том, чтобы включать их, и они могут улучшить скорость, а не то, что на таком коротком входе будет большое дело.
Конечно, это предполагает, что вы работаете на языке и локали, где прописные буквы, эквивалентные o
, n
и d
, равны O
, N
и D
. Если нет, вам нужно будет сказать своему интерпретатору регулярных выражений игнорировать регистр. Механизм зависит от языка / структуры.
Для python вы бы использовали что-то вроде:
re.match('[1-9ond][123][0-9]', inputstring, re.IGNORECASE)
re.match
вызывает совпадение в начале строки, поэтому вам не понадобится ^
в любом случае.