Mac Address RegEx для фильтрации плохих компьютеров Mac - PullRequest
0 голосов
/ 07 октября 2019

У меня есть стороннее приложение с полем MAC-адреса, к которому я могу применить только RegEx для проверки данных. У меня есть RegEx, который работает для проверки длины, гексагона и тире / двоеточий. Мой камень преткновения пытается предотвратить ввод всех одинаковых символов, всех 0, всех 1 и т. Д.

Это то, что у меня есть:

/^(?:[A-Fa-f0-9]{2}([-:]{0,1}))(?:[A-Fa-f0-9]{2}\1){4}[A-Fa-f0-9]{2}$/

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Все части соответствуют одному и тому же классу персонажей. Вы также можете запустить шаблон с отрицательным прогнозом (?!.*([A-Fa-f0-9])\1), чтобы проверить, нет ли 2 одинаковых символов, следующих за другой ссылочной ссылкой.

Тогда ваша текущая обратная ссылка увеличится с \1 до \2

^(?!.*([A-Fa-f0-9])\1)(?:[A-Fa-f0-9]{2}([-:]?))(?:[A-Fa-f0-9]{2}\2){4}[A-Fa-f0-9]{2}$

Шаблон регулярного выражения

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

В PCRE вы можете использовать отрицательный взгляд, чтобы запретить некоторые специфические паттерны.

/^(?!(.)\1(?:[-:]?\1\1)+$)[A-Fa-f0-9]{2}([-:]?)(?:[A-Fa-f0-9]{2}\2){4}[A-Fa-f0-9]{2}$/

Обратите внимание, что я также немного реорганизовал ваше регулярное выражение.

...