使用正则表达式在10位数后不允许小数点

时间:2018-03-29 06:37:48

标签: c# asp.net regex

我想只允许使用正则表达式的文本框中的数字。

  • 允许最多10位数。
  • 小数点后最多2位数。
  • 不允许使用10位数后的小数点。

有效表达式:

999999999.22
1234567890
123447899.1

表达式无效:

99999999999
9999999999.12
9999999999.1
99999999999.12
99999999999.1

我试过下面的正则表达式,这就是我想要的一切: 它允许10位数后的小数点,这是我不想要的。 小数点应仅在最多9位数后有效。

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

2 个答案:

答案 0 :(得分:2)

您可以将正则表达式分为三个部分:1到10位,1到9位和1位小数,1到8位和2位小数:

^\d{1,10}$|^\d{1,8}\.\d{2}$|^\d{1,9}\.\d$

Proof

答案 1 :(得分:0)

您可以使用alternation匹配1 - 9位数后跟1或2位小数或1 - 10位数:

^(?:\d{1,9}\.\d{1,2}|\d{1,10})$