Regex, чтобы разрешить следующие символы - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь сделать простую проверку номера телефона , и я борюсь с проверкой регулярного выражения для этого. Я хотел бы разрешить пользователям вводить следующее:

  1. Any di git
  2. -
  3. +
  4. (
  5. )
  6. space / пробел

На данный момент у меня есть что-то вроде этого: /[0-9-+()\s]*/im, но вроде не работает. Кто-нибудь может мне помочь? Я не нацелен на какую-либо конкретную c страну, поэтому я не хочу следовать каким-либо строгим форматам.

1 Ответ

0 голосов
/ 26 мая 2020

Вам нужно начать с символа ^, чтобы он соответствовал с самого начала, и символа $, чтобы он совпадал до конца. В противном случае он будет соответствовать тому, что может, и проигнорировать все, что не подходит за пределами этого. Вы также можете быть более директивными. Например, символ + может быть разрешен только в качестве первого символа, или вы можете указать, чтобы было как минимум 7 символов. Пример кода ниже показывает некоторые из них.

// r1 fixes the one you were trying by adding ^ and $ 
const r1 = /^[-+0-9()\s]*$/
//          =            =

// r2 adds rules like a "+" can only appear at the start
// and there must be at least 7 digits
const r2 = /^\+?[-0-9()\s]{7,}$/
//           ===          ====

const tests = [
  "123 456-7890", 
  "789", 
  "+4 9084342",
  "hello",
  "123+457+432",
  "1234567!"
]
for (const num of tests) console.log(`r1: ${r1.test(num)} - ${num}`)
console.log("-----")
for (const num of tests) console.log(`r2: ${r2.test(num)} - ${num}`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...