2016-09-27 49 views
-1

如何制定这是一个正则表达式使用正则表达式匹配小数范围

if (a > 0 and a < 50) 
    Match 
else 
    NoMatch 

哪里a.十进制值作为小数点分隔符。

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

+0

这是学校? –

+0

为什么你必须把它作为一个正则表达式?这可能是最糟糕的解决方案。你如何编写一个将验证1.7685939828892840293480283420834的正则表达式,这将符合你的需求描述? pi的所有数字都会如何,这也适合该范围?你的老师有没有告诉你它必须是一个正则表达式? –

+0

这是针对基于正则表达式进行验证的组件中的参数,并且在输入的值与正则表达式不匹配时发出抱怨。我不具备在不幸的情况下处理这种验证,即使它会很容易堆积 –

回答

1

不是说我赞成使用这样的正则表达式,但你可以这样做:

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

Demo and Explanation

+0

好的答案! +1 – XenoRo

+0

我想现在它取决于用例......你的答案是简约,易于遵循,并提供整个比赛作为一个单一的组;虽然我的分组和乱七八糟,但将字符串的每个部分分成代表组成部分的组,例如前导零,以及小数点前后数字,准备用于“模式匹配器”结构处理特定组中的数据而不是整个事物。 =) – XenoRo

+0

感谢您的回答。我确实访问了您所指的网站,但未能找到我的问题的答案。我给了它另一个机会:-) –

1

我的看法:

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

+1

这匹配50. OP指出'a​​> 0和一个<50'。也匹配0.0 – dawg

+0

[见这里](https://regex101.com/r/EdmENC/1) – dawg

+0

@dawg哦,你说得对!它也不应该匹配0(.0 +)!对不起,我的滑倒!定影... – XenoRo