2015-06-05 35 views
7

看来我再次陷入了一个简单的正则表达式。最多3位数,最多3位小数

我想什么:999

  • 一个数字之间1
  • 可选:如果输入了逗号网友实拍
  • 一个逗号,最低1位小数和最高3个 小数应预先安排。

允许:
999,0
999,999
999,99

不允许:
-1
999,
999,9999

这是我到目前为止有:

^[0-9]{1,3}(?:\,[0-9]{1,3})?$ 

任何提示吗?

+0

这几乎是相同的,它可以适应你的需要trivially:http://stackoverflow.com/questions/26901088/regex-numbers-between-xx-xxx-xx –

回答

4

你可以使用这个表达式:从OP的正则表达式

/^[1-9]\d{0,2}(?:\,\d{1,3})?$/ 

RegEx Demo

主要区别是使用的[1-9]其中1相匹配的数字到9的正则表达式的其余部分之前。

+1

我很喜欢它,如果人们实际上解释了什么该ir正则表达式。 – evolutionxbox

+0

嗯,很奇怪。在你的演示中,它似乎正常工作。当使用它时,它接受一个没有小数的逗号,当小数存在时,验证失败:s – Bv202

+0

我正在使用Angular,使用ng-pattern指令:ng-pattern =“/^[1-9] \ d {0,2}(?:\,\ d {1,3})?$ /“ – Bv202

5

此正则表达式应该工作:

^[1-9]\d{0,2}(?:,\d{1,3})?$ 

下面是说明:

^[1-9]:应该以数字开头1和9

\d{0,2}之间:通过最小0其次,最大2数字(0-9)

(?:,:后跟逗号

\d{1,3})?:如果有一个逗号,应该跟着一个三位数

$:电话那端

EXAMPLE

感谢@ DEV-空此链接:Explanation

+0

如果人们真正解释了他们的正则表达式,我会喜欢它。 – evolutionxbox

+0

@evolutionxbox http://regexper.com/#%5E%5B1-9%5D%5Cd%7B0%2C2%7D(%3F%3A%2C%5Cd%7B1%2C3%7D)%3F%24 – andlrc

+1

[相同的答案已经发布](http://stackoverflow.com/a/30662081/548225) – anubhava