C# 最大值正则表达式
我提出了以下regexp来接受间隔为.25或四分之一格式的值,如1.25、10.75、11.50、12、13 正则表达式 范例 接受值=0,0.25,0.50,0.75,3,1.25,1.50,1.75,5,10 不可接受值=0.15、0.20、0.26、0.30、1.30、1.55 我有以下问题, 1-不接受0.25,但接受0.25 2-如何将该值限制为最大值,我希望它最多可接受15.5您可以尝试以下方法:C# 最大值正则表达式,c#,.net,regex,C#,.net,Regex,我提出了以下regexp来接受间隔为.25或四分之一格式的值,如1.25、10.75、11.50、12、13 正则表达式 范例 接受值=0,0.25,0.50,0.75,3,1.25,1.50,1.75,5,10 不可接受值=0.15、0.20、0.26、0.30、1.30、1.55 我有以下问题, 1-不接受0.25,但接受0.25 2-如何将该值限制为最大值,我希望它最多可接受15.5您可以尝试以下方法: string input = "0, 0.25, 0.50, 0.75, 1 , 1.
string input = "0, 0.25, 0.50, 0.75, 1 , 1.25 , 1.50, 1.75 0.15, 0.20, 0.26, 0.30, 1.30, 1.55";
double max = double.MinValue;
var result = Regex.Replace(input, @"\b\d\.\d+\b", match =>
{
double d = double.Parse(match.Value);
// do whatever you want
if (d > max)
max = d;
return "";
});
由于正则表达式不支持数学运算,您可以尝试以下操作:
string input = "0, 0.25, 0.50, 0.75, 1 , 1.25 , 1.50, 1.75 0.15, 0.20, 0.26, 0.30, 1.30, 1.55";
double max = double.MinValue;
var result = Regex.Replace(input, @"\b\d\.\d+\b", match =>
{
double d = double.Parse(match.Value);
// do whatever you want
if (d > max)
max = d;
return "";
});
因为在我看来,正则表达式不支持数学运算,所以正则表达式不是这类工作的正确工具。您想要接受的所有值都是十进制值,为什么不简单地将输入的值解析为十进制值,然后检查您接受的值是否正确
decimal number;
if (Decimal.TryParse(value, out number))
// Check if you're in the correct range
它会简单得多,而且不会出错。在我看来,正则表达式不是进行此类工作的正确工具。您想要接受的所有值都是十进制值,为什么不简单地将输入的值解析为十进制值,然后检查您接受的值是否正确
decimal number;
if (Decimal.TryParse(value, out number))
// Check if you're in the correct range
它会简单得多,而且不会出错。我认为Regex是一种错误的方法,但是如果你坚持,下面的方法应该适合你
^(\d|1[0-5]?)((\.0+)*|(\.250*)|(\.50*)|(\.750*))$
我认为正则表达式是一种错误的方法,但是如果你坚持,下面的方法应该适合你
^(\d|1[0-5]?)((\.0+)*|(\.250*)|(\.50*)|(\.750*))$
它不接受.25,就好像你在开始时有一个
\d+
,这意味着你在之前至少要等待一个数字。我想您可以通过以下方式将\d+
更改为接受,直到15岁
可以找到正则表达式的详细信息。不接受。25就好像您在开始时有一个\d+
,这意味着您在之前至少要等待一个数字。我想您可以通过以下方式将\d+
更改为接受,直到15岁
可以找到正则表达式的详细信息。这是一种错误的方法,但仍然是一种解决方案
^((1[0-4]|[0-9])?(\.(25|5|75)?0*)?|15(\.(25|5)?0*)?)$
给出:
.25
3.75000
10.500
0.25
这是一种错误的方法,但仍然是一种解决方案
^((1[0-4]|[0-9])?(\.(25|5|75)?0*)?|15(\.(25|5)?0*)?)$
给出:
.25
3.75000
10.500
0.25
您可以使用此正则表达式:
^((?:1[0-4]|[0-9])?(?:\.(?:25|5|75))?0*|15(?:\.(?:25|5)?0*)?)$
演示:您可以使用以下正则表达式:
^((?:1[0-4]|[0-9])?(?:\.(?:25|5|75))?0*|15(?:\.(?:25|5)?0*)?)$
演示:^(0-1)?[1-4]?(| \.0+| \.250*| \.50*| \.750*)$
,用于匹配0-14个数字和
将数字15、15.25、15.50*与以下内容匹配
15(\.0+\.250*\.50*)
最后一个是
^((0+1)[1-4]?([124\.0+.250*.50*.750*)(15([124\.0+.250*.50*))$
^(0-1)][1-4]?([124\.0+.250*.250*.750*)用于匹配0-14个数字
将数字15、15.25、15.50*与以下内容匹配
15(\.0+\.250*\.50*)
最后一个是
^(((0 | 1)?[1-4]?(| \.0+| \.250*| \.50*| \.750*)(15(| \.0+| \.250*| \.50*)$
如果你正在执行1/4英寸增量,为什么你不能检查该值是否更大>15.5
如果(f==0.25%)英寸,什么会阻止你写一些条件检查&&inches<15.5
如果您正在执行1/4
英寸增量,为什么您不能检查该值是否大于15.5
如果(f>0&&f%0.25==0&&f如果(inches%.25<0),有什么阻止您编写一些条件检查if(f>0&&fif(inches%.25<0)&&inches<15.5
我不认为OP想要列表中的最大值,只想将匹配限制为小于15.5的值。我不认为OP想要列表中的最大值,只想将匹配限制为小于15.5的值。这不匹配.25
@arco444,对,它不应该匹配。它应该匹配0.25
确实如此。OP的问题1向我提出了相反的建议?它也匹配了15.75
我一开始没有接受这个值。可能跳过了。这与.25
@arco444不匹配,对,也不应该匹配。它应该匹配0.25
并且匹配。OP的问题1向我提出了相反的建议?它也匹配s15.75
我没有把它作为第一位的值来接受。可能跳过了它。你接受的所有值都是十进制的,至少从你的问题来看是这样。如果值不是十进制的,TryParse将失败,并返回false,所以你知道它是否返回true,它已经是一个好的格式。@user1263981.25的倍数怎么可能不是呢是否可以表示为十进制?至少从您的问题来看,您接受的所有值都是十进制的。如果值不是十进制的,TryParse将失败并返回false,这样您就知道如果它返回true,那么它已经是一种好的格式了。@user1263981、<15.5的.25的倍数怎么可能不能表示为十进制的?@user1263981-它不是…请遵循t他链接并将其输入窗口。还有一个问题,我如何将其更改为接受max 4.5?将(1[0-4]|[0-9])
更改为([0-3])
和15
更改为4
,因为max 24将是^((2[0-3]| 1[0-9]|[0-9])?(\(0-25 | 5 | 75)0*));24(\(0)0*)?)$@user1263981-这不是…按照链接将其输入窗口。还有一个问题,我如何将其更改为接受max 4.5?将(1[0-4]|[0-9])
更改为([0-3])
和15
更改为4
,对于max 24,将是^0((2[0-3]| 1[0-9]|[0-9]|[0-9])?(\(0-25 | 5 | 75)0*)。)$Matches51894.0000
这是>15匹配15.75
这是>15.5不匹配8.250
现在这个工作正常了,但我认为问题解决了;)很好。匹配51894.0000
这是>15匹配15.75
这是>15.5不匹配8.250
现在这个工作正常,但我认为问题解决了;)很好。很抱歉输入错误。修改人?@Anna No