У вашего первого регулярного выражения есть некоторые проблемы.Важно то, что он принимает {{{{}}}}}
, что означает, что вы создали неправильный класс символов.Также оно соответствует 123-45 6789
(обратите внимание на сочетание пробела и тире).
Для обозначения ИЛИ в регулярных выражениях вам нужно использовать трубу |
и помнить, что каждый символ принадлежит той стороне, в которой он находится.Так, например, ^1|2$
проверяет строки, начинающиеся с 1
или заканчивающиеся 2
, а не только двумя отдельными входными строками 1
и 2
.
Чтобы применить точное совпадение, которое вам нужно сделать ^1$|^2$
или ^(1|2)$
.
Со вторым регулярным выражением ^[a-zA-Z0-9]{7}$
вы не говорите буквенно-цифровой идентификатор из 7 символов , но вы говорите числовой, буквенный или буквенно-цифровой.Так что это соответствует 1234567
тоже.Если это не проблема, то следующее правило является решением путем устранения указанных проблем:
^\d{3}([ -]?)\d\d\1\d{4}$|^[a-zA-Z0-9]{7}$