Как реализовать вариативность в регулярных выражениях?
Решала задачу, прошерстила интернет, на некоторые вопросы не нашла ответ. По возможности подскажите, пожалуйста, что почитать, чтобы найти ответы (возможно название нужных символов).
ТЗ задачи:
- если номер начинается с '+', то он содержит 12 цифр
- если номер начинается с цифры или открывающей скобки, то он содержит 10 цифр
- может содержать 1 пару скобок '(' и ')'
- скобки (если они есть) внутри содержат четко 3 цифры
- номер может содержать только цифры, '+', '(' и ')'
- номер заканчивается на цифру
Мои вопросы:
Как проверить, что номер начинается либо с открывающей скобки, либо с числа так, чтобы учитывать, что всего в подходящей строке может быть только 10 чисел? Написала такое выражение: ^[\d(]\d{10}, но если номер начинается с цифры, то в подходящем номере программа будет ждать 11 цифр
Как реализовать требование, что скобки могут быть в любой позиции строки (кроме последней)? Предварительно эту часть записала так: ^[\d(](\d{3})\d{10}, но тут четко стоит позиция скобок (скобка на первом индексе, затем три числа, затем закрывающая скобка)