javascript正则表达式数字范围格式检查[重复]
Posted
技术标签:
【中文标题】javascript正则表达式数字范围格式检查[重复]【英文标题】:javascript regex number range format check [duplicate] 【发布时间】:2015-08-06 03:59:57 【问题描述】:我想检查给定的输入是否是有效的整数范围。
[0-9]-1[0-9]
上述正则表达式在某些情况下不起作用。
示例: 10 // 错误。 - 按预期工作 10-20 // 是的。 - 按预期工作 h-g // 错误。 - 按预期工作 10-20-//是的。 - 应该是假的 10-20-30 // 是的。 - 应该是假的
更新 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+$/
【问题讨论】:
除了示例之外,您可能还想(用文字)定义预期范围是什么......例如,负数到正数-10-20
? 20-10
呢?
问题陈述通过允许浮点数增加了复杂性。我修改了正则表达式以允许整数/浮点数/^(\s*\d+|\d*\.\d+\s*,1)+\s*\d+|\d*\.\d+\s*$/
。这适用于除一种特定格式之外的所有类型的输入。例子。对于输入 1,2.5,3 它失败了。其实应该会过去的。
【参考方案1】:
您的 regex
仅检查子字符串/包含。
使用锚点^
:开头和$
:结尾。
/^\d+-\d+$/
说明:
/
:regex
的分隔符
^
:开头是
\d+
:匹配一个或多个数字
-
:匹配 -
文字
$
:以结尾
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
【讨论】:
我还要指出*
量词意味着 0 或更多,例如-
2-
-2
全部匹配。 100-10
也是如此。不过,我主要归咎于 OP 缺乏明确的要求。
var rangePattern = new RegExp('/^[0-9]*-[0-9]*$/');通过 = rangePattern.test(rangeValue);它返回 false 输入:10-20
我认为这是在答案中最无理由地使用未要求的库。例如演示<input onblur="alert(/^\d+-\d+$/.test(this.value))">
.
@RobG 仅用于现场演示
@SureshRajagopal ^(\d+,)*\d+$
见Demo以上是关于javascript正则表达式数字范围格式检查[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Django:使用正则表达式检查表单中的 CharField 格式