Как реализовать операцию сравнения в regexp?

86
27 сентября 2021, 03:30

Пытаюсь решить следующую задачу именно с использованием regexp в JS. Суть задачи проста: По входным данным матчить числа N-ой значности. Это первое условие. Вторым условием является то, что последовательность цифр в числе должна быть не убывающей.

Например, для пятизначных чисел, регулярка должна отобрать такие числа, как 12234 или 11234 или 45678 и т.д.

Желательно использование квантификатора {n} для общей группы, чтобы можно было задавать значность числа в процессе генерации регулярки. Но буду рад любым предложенным вариантам.

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

Answer 1

Нет, сравнивать числа regex не умеет, поэтому вам придется самостоятельно задать допустимый порядок: ^1*2*3*4*5*6*7*8*9*$ — т. е. любое число единиц (в том числе их отсутствие), затем любое число двоек, ..., любое число девяток

Длину совпадения можно проверить с помощью выражения ^\d{5}$ или даже ^.{5}$

Для того чтобы проверять оба условия одновременно, необходимо одно из них засунуть в просмотр вперед, в итоге получаем: (?=^.{5}$)^1*2*3*4*5*6*7*8*9*$ или (?=^1*2*3*4*5*6*7*8*9*$)^.{5}$

READ ALSO
canvas Отследить нажатый элемент

canvas Отследить нажатый элемент

Подскажите, пожалуйста, как отслеживать состояние "элементов" созданных на холстеВот простой пример

182
Как изменить выделенный текст при нажатии на кнопку?

Как изменить выделенный текст при нажатии на кнопку?

Сделал вот такой маленький пример:

258
x509: certificate signed by unknown authority на Golang

x509: certificate signed by unknown authority на Golang

Имеется js код такого типа, который делает запрос к апи и получает от него ответ

304