javascript 正则表达式数字范围格式检查

javascript regex number range format check

我想检查给定的输入是否是有效的整数范围。

[0-9]-{1}[0-9]

上述正则表达式在某些情况下不起作用。

示例:
10 // 错误。 - 按预期工作
10-20 // 正确。 - 按预期工作
h-g // 错误。 - 按预期工作
10-20- // 正确。 - 应该是 false
10-20-30 // 正确。 - 应该是 false

更新 2:检查逗号 (,) 分隔输入

现在相同的输入文本字段也可以允许逗号 (,) 分隔输入。例如。也允许 10、20、30。 rangePattern = new RegExp('^[0-9]*,[0-9]*$');不允许我给出一个以上的逗号。如何允许悔改。

示例:
10,20 有效。
10,20,30 有效。
10,20,无效。
10,20-30无效。

更新 3:正则表达式 /^(\d+,)*\d+$/ 不适用于输入 10,20 如何解决?

已解决:
{1} - 只允许一次。
正则表达式应该是 /^(\d+,{1})*\d+$/

您的 regex 只检查 substring/contains。

使用锚点^:开始于和$:结束于.

/^\d+-\d+$/

解释:

  1. /regex
  2. 的分隔符
  3. ^: 开头为
  4. \d+:匹配一个或多个数字
  5. -:匹配-文字
  6. $:以
  7. 结尾

jsfiddle Demo

<input onblur="alert(/^\d+-\d+$/.test(this.value))">

RegEx101 Demo


更新

var rangePattern = new RegExp('/^[0-9]*-[0-9]*$/');
pass = rangePattern.test(rangeValue);

使用 RegExp 构造函数时不需要 / 分隔符。

使用

var rangePattern = new RegExp('^[0-9]*-[0-9]*$');

更新 2

要匹配以逗号分隔的数字:

/^(\d+,+)*\d+$/g

RegEx101 Demo