Regex 使用正则表达式匹配十进制范围

Regex 使用正则表达式匹配十进制范围,regex,Regex,如何将其表述为正则表达式 if (a > 0 and a < 50) Match else NoMatch if(a>0和a0和

如何将其表述为正则表达式

if (a > 0 and a < 50)
  Match
else
  NoMatch
if(a>0和a<50)
火柴
其他的
游牧民族
其中,
a
是以
作为小数分隔符的十进制值


我知道使用上面的代码会更容易,但不幸的是,我必须将其作为正则表达式来使用。

我并不赞成使用正则表达式来实现这一点,但您可以:

^(?=[0.]*[1-9])((?:0|1|2|3|4)[0-9]?\.(?:\d*))$
我的想法:


^(0+(\.)0*[1-9]\d*)|(0*([1-4]\d)|[1-9])(\.)\d+)$

这是学校用的吗?你为什么要作为正则表达式来做?这可能是最糟糕的解决方案。如何编写一个正则表达式来验证1.7685939828892840293480283420834,这将符合您的需求描述?pi的所有数字都在这个范围内吗?您的老师告诉过您必须是正则表达式吗?这是针对组件中的参数,该组件基于正则表达式进行验证,并在输入的值与正则表达式不匹配时进行投诉。不幸的是,我没有能力在外部处理此验证,即使它很容易堆。因此,不,它不适用于学校:-)因此a)在将其传递给组件之前进行验证,然后将实际值作为正则表达式提供;b) 找到不同的组件;或者c)优化您的需求,使一个合理的正则表达式能够工作,然后至少在这里展示您的努力,尝试编写一个能够工作的正则表达式。我们不是一个,这是我需要的一个模糊描述。一个正则表达式猴子能想出一个适合我的表达式吗?地点你甚至都没有费心去尝试;你甚至没有指定你正在使用的各种各样的正则表达式引擎中的哪一个,这与任何答案都非常相关。这与50个匹配。OP状态为
a>0和<50
。也匹配0。0@dawg哦,你说得对!而且它也不应该匹配
0(.0+)
!对不起,我的疏忽!修好…@dawg现在应该修好了。如果你投了反对票,请回复。=)回答得好+1我想现在这取决于用例。。。你的答案是最低限度的,简单易懂,并提供了作为一个单一组的整个比赛;虽然我的是一堆分组和
s,但将字符串的每个部分分成表示组件的组,例如前导零、小数点前后的数字,以便
模式匹配器
结构处理特定组中的数据,而不是整个组。=)谢谢你的回答。我确实访问了您所指的网站,但未能找到我的问题的答案。我再给它一次机会:-)哦,你的答案不能处理超过1个前导
0
,可以看出。在
(?:0 | 1 | 2 | 3 | 4)
上的零之后添加
*
+
可以修复它,如图所示-应该是一个小问题,所以我将维护我的+1-编辑:只是确保刚刚接受答案的@FranzThomsen知道需要这个小修复。=)是的,明白了:-)