0

我不确定这是否可能,但是......

对于字符串

2-3

是否可以构造一个正则表达式来检查第一部分是否小于第二部分?

同样,是否可以构造一个正则表达式来检查第一部分是否大于第二部分?或者如果他们是平等的?

我知道我可以使用 explode 并手动完成,但我希望有一个更优雅的解决方案。

有任何想法吗?

谢谢你。

4

3 回答 3

2

您不能仅使用正则表达式来做到这一点,您需要使用正则表达式将字符串解析为单独的部分,然后使用语言逻辑来执行其余部分。例如。

$string = "2-3";
$regexp = "/([0-9]+)[+-\/\*]([0-9]+)/";
preg_match($regexp, $string, $matches);

一旦你解析了字符串

if ($matches[1] > $matches[2]) { } 
于 2013-06-29T09:33:51.577 回答
0

正则表达式的目的只是匹配一些模式,它包含完全匹配的运算符,处理字符串。

如果您比较数字,您会使用一些数学运算符,因此您应该使用编程语言来执行此类操作。为什么?因为数学运算应该适用于诸如 等类型的int数据float

正则表达式将帮助您从字符串中提取所需数据 -> 使用默认工具利用数据。

于 2013-06-29T09:32:57.410 回答
0

如果字符串始终采用该格式,则确实不需要 RegEx

$string = "2-3"; 
$firstGreater = (int) $string[0] > (int) $string[2];
于 2013-06-29T09:35:48.393 回答