Как отменить шаблон регулярного выражения - PullRequest
0 голосов
/ 06 ноября 2018

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

^(?=\d{6}$)(?:(\d)\1{5,}|012345|123456|234567|345678|456789|567890|098765|987654|876543|765432|654321|54321)$

Идеально, чтобы соответствовать положительным случаям, это должно обеспечить:

  • 6 цифр
  • одна и та же цифра не повторяется 6 раз
  • это не последовательно увеличивается или уменьшается на 1

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

редактирует Хотя я знаю, что это может быть обработано с помощью javascript, я бы хотел обработать его с помощью регулярных выражений, чтобы использовать обработку ошибок Foundations

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете использовать это регулярное выражение:

/(?=^(\d){6}$)(?!^\1{6})(?!^(?:012345|123456|234567|345678|456789|567890|098765|987654|876543|765432|654321|54321)$)^\d+$/

Регулярное выражение использует look ahead и начинает с проверки того, что 6 digits. Он захватывает last digit, который используется с обратной ссылкой для проверки, есть not 6 of the same digit. Затем он использует negative look ahead для сравнения со списком недопустимых последовательностей.

Наконец, оно соответствует 6 digits.

...