WedX - журнал о программировании и компьютерных науках

Регулярное выражение для номера контакта, который начинается/не начинается с +

Я попытался создать базовое регулярное выражение контактного номера в Южной Африке. Однако это не работает. Правила просты.

10 цифр или 11 цифр, если он начинается с +

Примеры: 0119879874 0731231234 +27731231234 +27123456789

Он должен совпадать только с цифрами и длиной. Моя попытка: [+\d]\d{9}\d{0,2}
я проверил на сайте https://regex101.com/, и похоже, что это сработало. но не тогда, когда я проверяю это с помощью /[+\d]\d{9}\d{0,2}/.test('12345gjhf6789123456')), тогда я получаю истинное значение.


  • Я думаю, вы имеете в виду 10 цифр, если они начинаются с + (поскольку + не является цифрой) 26.10.2016
  • Его международный номер в Южной Африке начинается с +27, поэтому номер, который обычно равен 073 123 4567, будет +2773 123 4567. То же самое и с номерами наземных линий, поэтому он будет 11-значным, если у него есть + для начала. @ifran434 ifran434 я попробовал ваше регулярное выражение на тестовом сайте, на который я дал ссылку, но, похоже, оно не работает 26.10.2016

Ответы:


1

Вы должны указать ^ - начало строки и конец $ и

/^(\+\d)?\d{10}$/.test('12345gjhf6789123456'))
26.10.2016
  • я попробовал ваше регулярное выражение на сайте, на который я ссылался, но это дает мне ошибку 26.10.2016
  • Извиняюсь, что не подробнее. Он говорит + Предыдущий токен не поддается количественной оценке, когда я пытаюсь проверить его на сайте регулярных выражений. 26.10.2016
  • Извините, я забыл ``. Исправлена 26.10.2016

  • 2

    Вместо того, чтобы использовать регулярное выражение, которое не будет предоставлять никаких сообщений об ошибках и которое трудно читать (и поддерживать), я бы предложил простую функцию проверки, которая явно излагает правила:

    function validate(num) {
      if (num[0] === '+') {
        return num.length === 11;
      } else {
        return num.length === 10;
      }
    }
    

    Это имеет несколько преимуществ, в том числе:

    • быстрее, чем регулярное выражение
    • легче комментировать и расширять позже
    • можно заменить полноценной библиотекой предикатов или просто набором правил
    26.10.2016
  • Спасибо, я собирался использовать этот метод, но, к сожалению, это должно быть регулярное выражение, которое я использую. 27.10.2016
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]