正则表达式 - 将用户输入限制为0-128

时间:2015-03-02 18:51:09

标签: javascript regex

如何编写将用户输入限制在3位数范围内的正则表达式 0-128?

我一直在尝试\d{1,3},但这样可以让匹配超过0-128。

由于

4 个答案:

答案 0 :(得分:5)

您可以使用此正则表达式:

/\b([0-9]{1,2}|1[01][0-9]|12[0-8])\b/

Use this utility

答案 1 :(得分:2)

不包括128

您可以使用以下正则表达式执行此操作:

^0?\d{1,2}|1([0-1]\d|2[0-7])$

你或多或少地分层次地分解它。

第一个:

0?\d{1,2}

捕获最多(包括)99的所有值,可选择使用前导零(因此064)。

接下来,您捕获1[0-1]\d。这些是100119的值。这是因为最后一位没有约束。

最后你有12[0-7],两个第一个数字是固定的,你可以使用120最多127

包括128

如果允许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" />

完成。