Как проверить, что граница слова имеет все ноль, используя регулярное выражение - PullRequest
0 голосов
/ 04 марта 2019

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

^(?!\b(0)\1+\b)(?!(-))([+]?(\d{1,3})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$)

Я не хочу сопоставлять ввод, такой как "+00 (000) 000-0000", используя это регулярное выражение.Регулярное выражение не должно совпадать с "+00 (000) 000-0000".Я пытался исправить это с помощью «границы слова не должны содержать все нули», но не уверен, как это сделать.

Пожалуйста, предложите, как это исправить.Любой указатель поможет.

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Если вы хотите отклонить совпадение, если телефонный номер имеет все нули, вы можете принудительно установить наличие ненулевого числа, используя положительный взгляд вперед (?=.*[1-9])

^(?=.*[1-9])(?!-)([+]?(\d{1,3})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$)
 ^^^^^^^^^^^ This ensures the number have at least one non-zero number

Демо

0 голосов
/ 04 марта 2019

У вас есть пробелы, символы (, ), + и -, кроме цифр.Таким образом, если вы запретите строке содержать эти символы и только 0 цифру, вы достигнете желаемого эффекта.

Добавьте (?![0\s()+-]+$) отрицательный прогноз после ^, чтобы его можно было выполнить всамое начало строки.

^(?![0\s()+-]+$)(?!-)([+]?(\d{1,3})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$)

См. демо regex .

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