Хотите удалить / ( -) . из строк номера телефона

#javascript #reactjs #regex

#javascript #reactjs #регулярное выражение

Вопрос:

Я хочу удалить символы в телефонных номерах. Иногда это в формате 151-454-6545, но иногда это в (545)-(564)-(5465) а иногда это происходит в 548.445.8454. Я использую

 val.replace(/(d{3})(d{3})(d{4})/, '($1) -$2-$3')
  

для замены.. но это не удаляет точку.Что делать, чтобы также удалить точку? ожидаемый результат, например, 545-455-4545

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

1. сначала удалите все символы, затем отформатируйте в соответствии с желаемой структурой

2. ваше регулярное выражение ищет 1234567890 … т.Е. 10 цифр, между которыми ничего нет, поэтому не совпадает, поэтому не заменяет — ваш ввод составляет 11 цифр… так что это еще одна проблема

3. val.replace(/D /g, '').replace(/(d{3})(d{3})(d{4})/, '($1) -$2-$3') ?

4. также expected output like 545-455-4545 … тем не менее, вы пытаетесь заменить значение ($1) -$2-$3 … итак, вы хотите () или нет?

5. это? regex101.com/r/Wavw45/1

Ответ №1:

Я предлагаю использовать нецифровое выражение, чтобы заменить их на строку ‘-‘ :

   val.replace(/^D /, '')
  .replace(/D $/, '')
  .replace(/D /g, '-')
  

Дайте мне знать, если это делает то, что вам нужно.

РЕДАКТИРОВАТЬ: обрезать пробелы

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

1. но OP хочет 545-455-4545 вывод… или (123) -456-7890 — действительно неясно, что OP хочет быть честным, но:p с вводом (545)-(564)-(5465) вашего регулярного выражения выводит -454-564-5465-

2. Да, это не очень понятно, но я обновил, чтобы хотя бы обрезать пробелы

Ответ №2:

вот версия, содержащая только 1 регулярное выражение

https://regex101.com/r/Wavw45/1

регулярное выражение

[^dn]*(d{3})[^dn] (d{3,4})[^dn] (d{4})[^dn]*

замените (или любой другой шаблон, который вы хотите)

($1) -$2-$3

Ответ №3:

Используйте

 .replace(/^D*(d{3})D*(d{3})D*(d{4})D*$/, '$1-$2-$3')
  

Смотрите доказательство.

Объяснение

 --------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  D*                      non-digits (all but 0-9) (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  (                        group and capture to 1:
--------------------------------------------------------------------------------
    d{3}                    digits (0-9) (3 times)
--------------------------------------------------------------------------------
  )                        end of 1
--------------------------------------------------------------------------------
  D*                      non-digits (all but 0-9) (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  (                        group and capture to 2:
--------------------------------------------------------------------------------
    d{3}                    digits (0-9) (3 times)
--------------------------------------------------------------------------------
  )                        end of 2
--------------------------------------------------------------------------------
  D*                      non-digits (all but 0-9) (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  (                        group and capture to 3:
--------------------------------------------------------------------------------
    d{4}                    digits (0-9) (4 times)
--------------------------------------------------------------------------------
  )                        end of 3
--------------------------------------------------------------------------------
  D*                      non-digits (all but 0-9) (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  $                        before an optional n, and the end of the
                           string