Я хочу написати регулярний вираз для стандартного телефонного номера США, який підтримує такі формати:
###-###-####
(###) ###-####
### ### ####
###.###.####
де # означає будь-яке число. Поки я придумав наступні вирази
^[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}
відповідно. Я не зовсім впевнений, чи є останній правильним для пунктирної перевірки. Я також хочу знати, чи є якийсь спосіб я можу написати один вираз замість 4-х різних, які задовольняють різні формати, про які я згадав. Якщо так, я не впевнений, як це зробити. А також як я можу змінити вираз / вирази, щоб я також міг включати умову для підтримки коду області як необов'язкового компонента. Щось на зразок
+1 ### ### ####
де +1 - код міста, і він необов’язковий.
