首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >匹配数字和数字范围的正则表达式

匹配数字和数字范围的正则表达式
EN

Stack Overflow用户
提问于 2013-01-29 13:46:21
回答 2查看 1K关注 0票数 0

在应用程序中,我需要验证用户输入的字符串。

一个数字或一个范围(由‘-’分隔的两个数字)或逗号分隔的数字和/或范围的列表,任何数字必须介于1和999999之间。

在逗号和或“-”之前和后面允许有空格。

我认为下面的正则表达式可以做到这一点。

代码语言:javascript
运行
复制
(\d{1,6}\040?(,|-)?\040?){1,}

这与以下内容相匹配(这是非常好的)。(正则表达式中的\040是空格的字符)。

  • 00001
  • 12
  • 20,21,22
  • 100-200
  • 1,2-9,11-12
  • 20、21、22
  • 100 - 200
  • 1,2- 9,11 - 12

然而,我也得到了一个匹配的:

  • 12.

我在这里错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 13:50:30

你需要锚定你的要塞

代码语言:javascript
运行
复制
^(\d{1,6}\040?(,|-)?\040?){1,}$

否则,您将得到部分匹配的“!12”,它只匹配在最后一个数字。

看吧,在Regexr上

票数 1
EN

Stack Overflow用户

发布于 2013-01-29 13:58:55

代码语言:javascript
运行
复制
/\d*[-]?\d*/

我已经用perl对此进行了测试:

代码语言:javascript
运行
复制
> cat temp
00001 
12 
20,21,22 
100-200 
1,2-9,11-12 
20, 21, 22 
100-200
1, 2-9, 11-12
> perl -lne 'push @a,/\d*[-]?\d*/g;END{print "@a"}' temp
00001   12   20  21  22   100-200   1  2-9  11-12   20   21   22   100-200  1   2-9   11-12 

如上面所示,将所有regex匹配放在一个数组中,并最终打印数组元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14584456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档