修改正则表达式以限制数值范围

时间:2011-10-10 09:11:31

标签: regex

我正在修改正则表达式验证器控件。 目前的正则表达式如下:

(\d*\,?\d{2}?){1}$

据我所知,它允许带有2位小数的数字。

我需要像这样修改它:

  • 数字必须介于0 - 1.000.000之间。 (零至一百万)。
  • 该数字可能包含也可能不包含2位小数。
  • 该值不能为负数。
  • 逗号(,)是小数点分隔符。
  • 不应该允许任何千位分隔符。

3 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

^(((0|[1-9]\d{0,5})(\,\d{2})?)|(1000000(\,00)?))$

它接受以下数字:"4", "4,23", "123456", "1000000", "1000000,00", 但不接受:",23", "4,7", "1000001", "4,234", "1000000,55"

如果您只想接受正好两位小数的数字,请使用此正则表达式:

^(((0|[1-9]\d{0,5})\,\d{2})|(1000000\,00))$

答案 1 :(得分:0)

这个怎么样

^(?:\d{1,6}(?:\,\d{2})?|1000000)$

here on Regexr

它接受1到6位数字和2位数的可选分数OR“1000000”。

它允许数字以零开头! (001将被接受)

^将正则表达式锚定到字符串的开头

$将正则表达式锚定到字符串的末尾

(?:)是非捕获组

答案 2 :(得分:0)

^(([0-9]|([1-9][0-9]{1,5}))(\.[0-9]{1,2})?)|1000000$