L'unico modo è tradurre l'intervallo in uno schema (ovviamente), per questo devi dimenticare che hai a che fare con numeri interi ma vedi solo le cifre come "caratteri normali". Per il tuo intervallo di esempio:
^(?:1[0-57]?|3)$
Nota:regex ovviamente non è il modo per verificare se un intero è in un intervallo numerico. Nella vita reale, utilizzerai i buoni vecchi condizionali.