На основании ответа Match increasing/decreasing sequences using regex, эта модель делает близко. При программировании вам все равно нужно получить первую группу захвата \1
и проверить, равен ли ее размер 4. Здесь вам нужно установить режим многострочной линии, чтобы разрешить $ соответствовать концу строки.
Это потому, что это регулярное выражение захватывает все возможные группы, однако группы, которые вы хотите, имеют длину 4, поэтому это не должно быть проблемой.
(?x)
(
(?:a(?=b|$))?
(?:b(?=c|$))?
(?:c(?=d|$))?
(?:d(?=e|$))?
(?:e(?=f|$))?
(?:f(?=g|$))?
(?:g(?=h|$))?
(?:h(?=i|$))?
(?:i(?=j|$))?
(?:j(?=k|$))?
(?:k(?=l|$))?
(?:l(?=m|$))?
(?:m(?=n|$))?
(?:n(?=o|$))?
(?:o(?=p|$))?
(?:p(?=q|$))?
(?:q(?=r|$))?
(?:r(?=s|$))?
(?:s(?=t|$))?
(?:t(?=u|$))?
(?:u(?=x|$))?
(?:x(?=z|$))?
[a-z]?
|
(?:0(?=1|$))?
(?:1(?=2|$))?
(?:2(?=3|$))?
(?:3(?=4|$))?
(?:4(?=5|$))?
(?:5(?=6|$))?
(?:6(?=7|$))?
(?:7(?=8|$))?
(?:8(?=9|$))?
\d?
)
На этой ссылке вы можете увидеть живое регулярное выражение: https://regex101.com/r/xxED4s/2
@KernelPanic: Договорная –