Выражение регулярного выражения для соответствия нескольким комбинациям телефонных номеров - PullRequest
0 голосов
/ 08 ноября 2018

Я новичок в Stackoverflow и регулярных выражениях, поэтому, пожалуйста, потерпите меня.У меня есть индивидуальное размещение ложных телефонных номеров на нашем форуме.На форуме есть фильтр контента, который использует регулярные выражения, и коллега обновил фильтр, прежде чем уйти в отцовский отпуск.Теперь мне нужно обновить выражение, чтобы учесть новые шаблоны.Если он совпадает, номер телефона заменяется на [Отредактировано].Можно ли написать выражение, которое соответствует числам ниже, но исключает нашу линию поддержки?(Номер строки поддержки может соответствовать одному формату)

  1. 1 (864) yuppie 361-8969
  2. 1 (868) yuppie 751 1556
  3. 1 (878) 761-1655
  4. 1 (864) 391-8999
  5. 1 (865) 446 4830

Линия поддержки 1-866-9789

Итак, у меня действительно есть два вопроса: 1) Могу ли я использовать отрицательный взгляд вперед, чтобы сопоставить все номера телефонов и форматы, кроме нашей линии поддержки?2) Могу ли я сопоставить номера телефонов, когда между цифрами вводится текст?

Сложность в том, что я не могу запретить все цифры или комбинации, потому что форум используется для обсуждения финансов.Таким образом, номера используются в сообщениях на регулярной основе.

Заранее спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

Я против строгих форматов телефонных номеров (см., Например, это ), поэтому, пожалуйста, не используйте это для проверки телефонных номеров.

Я также уверен, что черный список определенных форматов телефонных номеров - это бесконечная гонка вооружений, победить в которой невозможно (если не запретить все номера, и даже в этом случае есть способы обойти это).

Сказав это, попробуйте регулярное выражение в соответствии с этим:

\b((\d[-\s]*)?\(?\d{2,3}\)?[-\s]*(\S+[-\s]*)?)?\d{3}[-\s]+\d{4}\b

Чтобы внести в белый список вашу линию поддержки, просто убедитесь, что соответствующая строка не является "1-855-700-6000".

...