使用正则表达式验证字符串- 1-30,最多有2位小数
本文关键字:2位 小数 1-30 正则表达式 验证 字符串 | 更新日期: 2023-09-27 18:11:50
正如标题所示,我需要一个正则表达式来验证输入字符串,以确保它是1-30到小数点后2位之间的数字。
例如
4 is fine
10.25 is fine
15.3 is fine
29.99 is fine
30 is fine
30.01 is not fine
编辑:所以它必须是一个正则表达式,由于我使用的系统的限制,我已经尝试了几个东西,
我最远能到
^'d{1,2}('.'d{1,2})?$
允许最多2位小数
编辑:对于需要正则表达式的特定情况,请尝试:
^(?!0)(30('.0{1,2})?|[12]?'d('.'d{1,2})?)$
^ ... $
-确保正则表达式在字符串的开始和结束处开始和结束。
(?!0)
-负向前看以确保我们不从0开始
(30('.0{1,2})?
- 30可选后跟。0或。00
|
Or…
[12]?
只能为1或2的十位数字
'd
1位非可选单位数字
('.'d{1,2})?
可选。digit或。digitdigit
不幸的是,这个正则表达式不容易调整以适应任何范围的数字。(这将是一个有趣的项目,编写一个程序,自动吐出像这样的正则表达式。)
否则我会说:不要再做无谓的无谓的事了。
double result;
if (double.TryParse(inputstring, out result))
{
if (result >= 1.0 & result <= 30.0)
{
return true;
}
}
return false;
如果它不是小数点后两位,而你需要它,你可以计算Round(result, 2)
,所以它是
虽然可以编写一个正则表达式来测试上述所有条件,但我不会这样做。
我将首先使用regex检查小数点后的位数,并将范围测试留到解析字符串之后。
下面的正则表达式允许小数点后0到2位数字(例如1.20
, 1.
, 1.1
, 2
)。注意1.
的情况-如果您不想要这种情况,那么将{0,2}
更改为{1,2}
^'d+('.'d{0,2})?$
注意,.2
被上面的正则表达式认为是无效的,因为正则表达式确保整个部分总是包含至少1个数字。
验证字符串后,可以解析数字并检查其范围,就像Patashu的答案一样。
应该可以了:
^([12]?'d('.'d{2})?|30('.'d{2})?)$
[12] ? ' d (' d {2}) ?-这是1到29.99之间的数字或者30.00或者30