试试这个:
^(?:[1-9]\d?|[12]\d{2}|3[0-5]\d|36[0-5])$
Run Code Online (Sandbox Code Playgroud)
^和结束锚点
$是匹配整个输入而不仅仅是它的一部分.(? ) 用于分组.| 是为了交替[1-9]\d? 匹配1到99[12]\d{2} 匹配100到2993[0-5]\d 匹配300到359360到365你必须列出可能的组合1-9,10-99,100-299,300-359,360-365:
^([1-9]\d?|[12]\d\d|3[0-5]\d|36[0-5])$
Run Code Online (Sandbox Code Playgroud)
不太适合正则表达式,但如果您坚持:
^(?:36[0-5]|3[0-5][0-9]|[12][0-9][0-9]|[1-9][0-9]|[1-9])$
Run Code Online (Sandbox Code Playgroud)
这不允许有前导零。如果您希望允许这些,请告诉我。
上面的表达式可以稍微缩短为
^(?:36[0-5]|3[0-5]\d|[12]\d{2}|[1-9]\d?)$
Run Code Online (Sandbox Code Playgroud)
但我发现第一个解决方案更具可读性。YMMV。