.NET正则表达式十进制数
我必须使用介于00.00到35.35之间的正则表达式十进制数进行验证,并进行以下简单假设(我使用的是C#) 1) 不需要前导零(可选)。 2) 始终需要2位小数 换句话说,它应该是一个小数点在2个小数点范围内的十进制数 有效数字的示例有:0.00、00.00、.67、2.89 在这些数字上应该失败:8.9999(4位小数),65.00(超出范围) 我很容易验证2个小数点,但不知道如何计算范围?.NET正则表达式十进制数,.net,regex,.net,Regex,我必须使用介于00.00到35.35之间的正则表达式十进制数进行验证,并进行以下简单假设(我使用的是C#) 1) 不需要前导零(可选)。 2) 始终需要2位小数 换句话说,它应该是一个小数点在2个小数点范围内的十进制数 有效数字的示例有:0.00、00.00、.67、2.89 在这些数字上应该失败:8.9999(4位小数),65.00(超出范围) 我很容易验证2个小数点,但不知道如何计算范围? 这是不是甚至可以用正则表达式来实现 试试这个正则表达式: ^(0?\d|[12]\d|3[0-4])?
这是不是甚至可以用正则表达式来实现 试试这个正则表达式:
^(0?\d|[12]\d|3[0-4])?\.\d\d$|^35\.([02]\d|3[05])$
真的。使用RegEx检查输入是否匹配
^\d{1,2}\.\d{2}$
,然后将其转换为一个数字并检查我将使用的0。例如:
private const decimal min=0.0M;
私有常量十进制最大值=35.35M;
范围内的静态布尔值(字符串s)
{
十进制d=新的十进制();
if(十进制锥巴色(s,out d))
{
返回d>min&&d
BTW,它是“.NET regex”,而不是“C#regex”。同样的正则表达式也适用于VB.NET和F#。不,这并不不幸(幸运吗?)。这是眼部治疗应用程序数据输入screen@John谢谢你的编辑,约翰。是的,我知道,它是一个“.NET正则表达式”,只是没有正确地说明它的上限是35.35,所以35.56
不应该通过。根据35.35(或任何数值)进行验证不应该作为正则表达式的一部分。这是可能的,但会使事情变得非常棘手和混乱。@是的,我同意这一点,只要看看上面的正则表达式。谢谢你的回复。是的,这就是我想知道的-是使用RegExValidator更好,还是使用像这样的方法的CustomValidator更好。@VictorS:我认为这比使用regex好得多,但可能您正处于需要正则表达式的情况下。@VictorS:这种方法的另一个好处是,您可以将此功能放入DecimalRangeValidator
类中,然后通过参数化max、min和test值,将其重新用于其他范围(如果有),有些人坚持使用正则表达式来解决所有问题,而不是为每个要测试的范围编写一个新表达式。就像用锤子画画……可能,但不是recommended@CodyC:用锤子画一幅画会得到一些更具“创造性”的当代艺术家的赞扬。特别是如果你用它来表演的话。
^(?:(?:[012]?\d|3[0-4])\.\d{2}|35\.(?:[012]\d|3[0-5]))$
private const decimal min = 0.0M;
private const decimal max = 35.35M;
static bool inRange(string s)
{
Decimal d = new Decimal();
if (Decimal.TryParse(s, out d))
{
return d > min && d < max;
}
else
return false;
}