Regex 正则表达式-捕获两个数字,确保第二个更大

Regex 正则表达式-捕获两个数字,确保第二个更大,regex,Regex,我需要一个正则表达式代码来匹配一组数字,但前提是第二个数字更大。数字以x,y的格式显示,如果y>x,我需要匹配它 捕捉任意长度的数字都很容易: /([0-9]*),([0-9]*)/ 当前,它将捕获x,y格式的任何内容(如果x&y是数字)。看看其他例子,我试着这样做: /([0-9]*),([0-9]*)(?>=\1)/ 我很确定我的方向是正确的,那里的\1引用了第一组,但我不确定如何进行比较。你能帮我吗 提前谢谢 p、 美国。 这里有一个链接到一个带有一些示例的。如您所见,当前所有内

我需要一个正则表达式代码来匹配一组数字,但前提是第二个数字更大。数字以
x,y
的格式显示,如果
y>x
,我需要匹配它

捕捉任意长度的数字都很容易:

/([0-9]*),([0-9]*)/
当前,它将捕获
x,y
格式的任何内容(如果x&y是数字)。看看其他例子,我试着这样做:

/([0-9]*),([0-9]*)(?>=\1)/
我很确定我的方向是正确的,那里的
\1
引用了第一组,但我不确定如何进行比较。你能帮我吗

提前谢谢

p、 美国。 这里有一个链接到一个带有一些示例的。如您所见,当前所有内容都匹配。

正则表达式匹配,但它们不进行比较

纯正则表达式不能“比较”数字。实际上,你必须经历每一个可能的场景,类似于


下面是一个匹配
X,Y
的快速示例,其中
X
X<10
,如果您愿意,您可以想象比这更高

\b(?:[0-9],[1-9][0-9]+|0,[1-9]|1,[2-9]|2,[3-9]|3,[4-9]|4,[5-9]|5,[6-9]|6,[7-9]|7,[8-9]|8,9)\b

这里您可以看到,我首先说,如果下一个数字是
[1-9]
,后跟至少一个数字(十、百、千等数字),则任何1位数字
[0-9]
都可以匹配。然后我们使用交替来查看每个数字后面可以跟什么(
4<[5-9]
)。如果你想走得更高,你不仅需要继续扩展,还需要对负数进行反向逻辑。这一切都被包装在一个非捕获组中,两侧都有单词边界



让我们玩得开心,让这项工作适用于常规表达式无法完成的
0。您使用的是什么语言?您可以捕获这两个数字,然后使用回调来过滤结果。您可能还想阅读我以前的一篇文章。正则表达式用于匹配模式,而不是计算数值。@HamZa我知道。但是正则表达式对于我的用例来说会更容易,因为我需要以字符串形式传递验证信息(函数等需要预先配置验证,我需要更通用的解决方案)。正则表达式必须定义所有有效数字对的域。我不需要负数或浮点数,我可以设定一个特定的限制,这样就可以了。是的,这是一个很好的答案,谢谢!你可能可以做一些for循环来自动遍历并创建这个字符串..你走得越高,你能做的增强就越多,比如:
1[0-9],(?:[2-9][0-9]+|[1-9][0-9]{2,})
哦,但是有一个问题(抱歉把正确的代码拿走了)-我最多只需要说2-3位数字。但是如果我在
10,20
上使用你的正则表达式,它将匹配
0,20
,这对我不好。它还匹配
21,12
,这也是wrong@yuvi请参阅我的更新,它更好地利用单词边界(它执行零长度断言来检查单词字符是否位于非单词字符
(^\w| \w\w| \w| \w$)
)的旁边,但是现在如果第一个数字是两位数,它就不起作用了。如果我们可以用正则表达式来表示,我们不能用更一般的形式吗?假设使用第一个数字配置第二个数字的限制?