如何编写将用户输入限制在3位数范围内的正则表达式 0-128?
我一直在尝试\d{1,3}
,但这样可以让匹配超过0-128。
由于
答案 0 :(得分:5)
答案 1 :(得分:2)
您可以使用以下正则表达式执行此操作:
^0?\d{1,2}|1([0-1]\d|2[0-7])$
你或多或少地分层次地分解它。
第一个:
0?\d{1,2}
捕获最多(包括)99
的所有值,可选择使用前导零(因此064
)。
接下来,您捕获1[0-1]\d
。这些是100
到119
的值。这是因为最后一位没有约束。
最后你有12[0-7]
,两个第一个数字是固定的,你可以使用120
最多127
。
如果允许128
,请使用:
^0?\d{1,2}|1([0-1]\d|2[0-8])$
你可以使用:
^\d|[1-9]\d|1([0-1]\d|2[0-8])$
在这里,我添加了^
和$
,以便字符串以数字开头和结尾。否则,您可以使用 - 如@anubhava建议的那样 - 单词边界\b
。虽然可能更好用:
\b(0?\d{1,2}|1([0-1]\d|2[0-7]))\b
\b(0?\d{1,2}|1([0-1]\d|2[0-8]))\b
\b(\d|[1-9]\d|1([0-1]\d|2[0-8]))\b
答案 2 :(得分:1)
0 - 128 将是:^(?:\d|[1-9]\d|1[0-1]\d|12[0-8])$
^
(?:
\d
| [1-9] \d
| 1 [0-1] \d
| 12 [0-8]
)
$
答案 3 :(得分:0)
正则表达式是这项工作的错误工具。
<input type="number" min="0" max="128" />
完成。