我试图为一系列小数构建一个简单的正则表达式,但由于某种原因,我在确定如何处理这段时间时遇到了一些困难。任何帮助将不胜感激。
样本编号:
3.5 - 4.3
我的非工作正则表达式:
(3.5-4.3)
答案 0 :(得分:0)
您提出的问题的答案是:
^(3\.[5-9]\d*|4(?:\.(?:[0-2]\d*|3))?)$
您的正则表达式会尝试捕获值3.5-4.3
。 ()
是一个捕获组,捕获其中的任何内容。在字符类之外的正则表达式中的-
没有特殊含义。
由于锚点^$
,所以提供的正则表达式正在寻找字符串的完全匹配,然后是3.5X
到3.9X
(X是任意数字的位数),{{1 }}本身,4
到4.0X
或4.2X
。
在字符类中允许范围并通过ascii表,因此它可能包含超出预期的值。例如4.3
包含符号,A-z
无效,a-Z
为a-z
到a
。
您没有提供正在使用的工具,因此无法提供额外帮助。可能不支持z
,但可以更改为\d
。
一个可能更好/更清晰的方法可能是捕获整数然后用你正在使用的任何语言进行比较。
[0-9]
然后像(PHP演示):
`^\d+\.?\d*$`
<强>更新强>
根据使用的引擎,这可能会更好,
if($match[0] >= 3.5 && $match[0] <= 4.3)
echo 'Valid number';