使用正则表达式验证字符串- 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位小数

使用正则表达式验证字符串- 1-30,最多有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