Я хочу написать регулярное выражение для стандартного телефонного номера телефона США, который поддерживает следующие форматы:
###-###-####
(###) ###-####
### ### ####
###.###.####
где # означает любое число. До сих пор я придумал следующие выражения
^[1-9]\d{2}-\d{3}-\d{4}
^\(\d{3}\)\s\d{3}-\d{4}
^[1-9]\d{2}\s\d{3}\s\d{4}
^[1-9]\d{2}\.\d{3}\.\d{4}
соответственно. Я не совсем уверен, что последнее верно для пунктирной проверки. Я также хочу знать, есть ли способ написать одно выражение вместо четырех разных, которые относятся к различным форматам, о которых я упоминал. Если да, я не знаю, как это сделать. А также, как мне изменить выражение/выражения, чтобы я мог также включить условие для поддержки кода области как дополнительного компонента. Что-то вроде
+1 ### ### ####
где +1 - код области, и это необязательно.