Regex 十进制范围的正则表达式

Regex 十进制范围的正则表达式,regex,Regex,我正在尝试为一系列小数构建一个简单的正则表达式,但由于某些原因,我在弄清楚如何使用句点时遇到了一些困难。任何帮助都将不胜感激 样本编号: 3.5-4.3 我的非工作正则表达式: (3.5-4.3) 你所问问题的答案是: ^(3\.[5-9]\d*|4(?:\.(?:[0-2]\d*|3))?)$ 您的正则表达式将尝试捕获值3.5-4.3()是一个捕获组,捕获其中的任何内容。字符类之外的正则表达式中的-没有特殊意义 提供的正则表达式正在寻找字符串的完全匹配,因为锚定^$,然后是3.5X到3.9X

我正在尝试为一系列小数构建一个简单的正则表达式,但由于某些原因,我在弄清楚如何使用句点时遇到了一些困难。任何帮助都将不胜感激

样本编号:

3.5-4.3

我的非工作正则表达式:

(3.5-4.3)


你所问问题的答案是:

^(3\.[5-9]\d*|4(?:\.(?:[0-2]\d*|3))?)$
您的正则表达式将尝试捕获值
3.5-4.3
()
是一个捕获组,捕获其中的任何内容。字符类之外的正则表达式中的
-
没有特殊意义

提供的正则表达式正在寻找字符串的完全匹配,因为锚定
^$
,然后是
3.5X
3.9X
(X是任意数字),
4
本身,
4.0X
4.2X
,或者
4.3

字符类中允许使用这些范围并遍历ascii表,因此它可能包含超出预期的范围。e、 g.
A-z
包括符号,
A-z
无效,
A-z
A
z

您没有提供正在使用的工具,因此无法提供其他帮助。
\d
可能不受支持,但可以更改为
[0-9]

一种可能更好/更干净的方法是捕获整数,然后用您正在使用的任何语言进行比较

`^\d+\.?\d*$`
然后是(PHP演示):


(3.5-4.3)
正在寻找文字
3.5-4.3
并捕获它。我不会叫它正则表达式,你用的是什么语言?是的,我做了一些类似(3\.5-4\.3)的事情,但运气不好。从我所读到的,正则表达式在处理数字范围方面是出了名的糟糕。我知道一定有一个更简单的方法。破折号并不能给你一个regex的范围,这是完全错误的方法。主要的问题总是:你想要达到的是什么?如果您试图验证输入,请首先解析字符串以提取数字,然后验证它是否在正确的范围内。您使用的工具是什么?
if($match[0] >= 3.5 && $match[0] <= 4.3)
     echo 'Valid number';
^(3\.[5-9][0-9]*|4(\.([0-2][0-9]*|3))?)$