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-2020-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 格式

Java中使用正则检查有效日期

检查字符串是不是以正则表达式数字开头

JavaScript-正则表达式

Javascript - 正则表达式匹配任何数字,包括无穷大、负数和 e+/- 数字 [重复]

[转帖]常用的正则表达式大全(数字字符固定格式)