Сделать символы необязательными в регулярном выражении

Я пытаюсь проверить номер телефона (US) без лишних символов. поэтому формат 1-555-555-5555 без тире, пробелов и т.д., а 1 не является обязательным. Тем не менее, мое регулярное выражение будет ТОЛЬКО, кроме чисел с ведущим 1, и говорит, что числа без него недействительны. Вот что я использую, где я ошибся?

"^(1)\\d{10}$"

Ответ 1

Использование:

"^1?\\d{10}$"

Что? означает "необязательный".

Ответ 2

Вы ничего не сделали, чтобы сделать 1 опциональным. Вы положили его в группу, но все. Вы хотите это:

"^1?\\d{10}$"

Это в основном говорит о соответствии (в этом порядке):

  • Начало строки
  • Необязательно символ '1'
  • Точно десять цифр
  • Конец строки

Более подробную информацию смотрите в документации для Pattern. Например, ? указан в разделе "Жадные квантификаторы" следующим образом:

X       X, один раз или вообще не

Ответ 3

Используйте этот "/^((\+?1-[2-9]\d{2}-[2-9]\d{2}-\d{4})|(\([2-9]\d{2}\)(\s)?[2-9]\d{2}-\d{4}))$/". Это разрешает только номера, разрешенные США, которые включают "1-xxx-xxx-xxxx", "+ 1-xxx-xxx-xxxx", (xxx) xxx-xxxx. Надеюсь, это то, что вы ищете.