Regex para intervalos numéricos

Aprenda como criar uma expressão regular para achar valores numéricos que sejam menores, maiores ou que estejam dentro de uma faixa.

Quero deixar claro que não domino RegExp porém tenho um conhecimento básico que me deixa testar algumas ideias, logo se você sabe mais e puder sugerir uma solução melhor, por favor faça-o!

Caso de Uso — Use Case

Um aluno veio me pedir uma ajuda para criar uma expressão regular para pegar valores maiores que 45 e ele já tinha outras duas expressões para outros casos, como visto na imagem abaixo:

Na primeira tentativa acertei.

Mas não era bem o que ele queria.

Então entrei no https://regex101.com/ para começar a testar algumas combinações.

Entenda abaixo como fiz essa solução.

Primeiramente testei algo lógico baseado na solução já existente, utilizei apenas a composição de intervalos de números, porém também não era a correta.

Então pensei em passar para o começo da expressão o caso de números maiores que uma centena e utilizar em conjunto da faixa dos números [1-9] um quantificador {1} para explicitar que quero no mínimo 1 caracter numéricos acompanhado de mais 1.

Porém como vimos essa expressão ainda não pega números maiores que 999, para resolver esse problema iremos modificar o quantificador {1} para que ele seja um intervalo e não apenas um valor, deixando assim:{1,9}

Todavia perceba que ele também pega valores que iniciam com 0:


Acima de 45 — ^([1–9]{1}[0–9]{0,9}[0–9][0–9]|4[5–9]|[5–9][0–9])


Do 15 ao 29 — ^(1[5–9]|2[0–9])


Do 30 ao 45 — ^(3[0–9]|4[0–5])


Dica — VerbalExpressions

Eu não conhecia esse projeto porém um broder indicou-me para que eu pudesse compartilhar com o pessoal que ainda não está acostumado.

Olha só como é um exemplo de uso:

Link: https://github.com/VerbalExpressions/JSVerbalExpressions


Conclusão

Se você conhece algo apenas superficialmente mas agregou esse conhecimento de uma forma mais concreta você pode facilmente inferir passos para uma solução baseando-se apenas em outras, do mesmo contexto, que já funcionam.

E caso você não consiga resolver de cabeça basta dar aquela bela pesquisada para assimilar os conceitos que você só tinha persistido o nome e o que fazia.

Por exemplo, nas expressões regulares que o aluno já possuía eu conhecia razoavelmente bem os operadores utilizados, com isso foi simples de chegar em uma solução praticamente usando o mesmo conceito de outras soluções.