Regex для подтверждения номера телефона - PullRequest
1 голос
/ 31 октября 2019

У меня есть требование, чтобы подтвердить добавочный номер (TN) (только добавочный). Расширение может иметь длину 3-6 цифр и расширение 3 цифры, которое не должно следовать за 11. И да, в остальном расширение не должно иметь специальных символов и всех нулей.

Например: 911, 311 и т. Д.,

Мы написали следующее.

(?!0+$)[0-9](?!.*11).[0-9]*$  

Проблема с вышеприведенным:

Для 311, 211 -> Валидация прошла успешно.

Для 38311, 2311 -> Это 4 и 5расширение длины цифры, и к нему можно добавить суффикс «11». Но приведенная выше схема не позволяет этого.

Не могли бы вы помочь мне в этом? или любой лучший подход к этому был бы великолепен.

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Вы можете использовать:

(?!^((0+)|(\d11))$)(?=^\d{3,6}$).*
  • (?!^((0+)|(\d11))$) - от начала до конца убедитесь, что это не все нули и не цифры, за которыми следует 11
  • (?=^\d{3,6}$)- От начала до конца убедитесь, что мы имеем дело с 3 до 6 цифрами
  • .* - Если предыдущие проверки пройдены, то можно безопасно захватить все

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

0 голосов
/ 31 октября 2019

Для проверки ненулевого значения вы можете просто использовать оператор >, а для остальных правил вы можете использовать этот шаблон

enter image description here

let data = ['911','311','38311','2311','000000','123111', '112']

data.forEach(v=>{
  console.log(v, '\t' , v > 0 && /^(?:(?:(?!11$)\d){3}|\d{4,6})$/.test(v)) 
})

Для проверки ненулевого значения вы также можете использовать регулярные выражения, но я предпочитаю вышеописанный метод лично

^(?!^0+$)(?:(?:(?!11$)\d){3}|\d{4,6})$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...