Регулярное выражение в формате us number с определенным форматом для 1-xxx-xxx-xxxx?

#javascript

#javascript

Вопрос:

это мой код, но он не работает, и я не знаю, почему?:

 const phoneRegex = RegExp(
  /^( 1)?[-]?([0-9]{3}))?[-]?([0-9]{3})[-]?([0-9]{4})$/
);
 

это решение появилось из этого, которое работает для xxx-xxx-xxx:

 const phoneRegex = RegExp(/^(?([0-9]{3}))?[-]?([0-9]{3})[-]?([0-9]{4})$/);
 

как мне добавить 1- с начала, чтобы заставить работать 1-xxx-xxx-xxxx?

Ответ №1:

Похоже, что вы пытаетесь сопоставить ‘(‘ и ‘)’ буквально в части ( 1), '' что означает, что вы хотите экранировать символ. Если вы имели в виду, что это просто необязательная группа захвата, обновите ее до: /^( 1)?[-]?([0-9]{3}))?[-]?([0-9]{3})[-]?([0-9]{4})$/

Комментарии:

1. эй, я не хочу, чтобы это было необязательно: (

2. Если вы хотите, чтобы все части были обязательными, исключите ? из каждой группы: /^( 1)[-]([0-9]{3}))[-]([0-9]{3})[-]([0-9]{4})$/ regular-expressions.info/optional.html имеет несколько хороших руководств по регулярным выражениям.