€ 符号之前的 PHP 正则表达式金额忽略小数



我有文字:

<a href="blahblahblah-dynamic" class="blahblahblah-dynamic" 
title="blahblahblah-dynamic">2.550,00 €</a>1000 € 900 € 5000 € ......

和表达式:

#(d+[.,]d*?)s?[€]#su

匹配:

550,00

示例:正则表达式

我怎样才能匹配整体:2.550,00

p.s 我不想在没有,和/或.的情况下匹配其他 1000、900 和数字 换句话说,我想匹配 d,d 或 d.d,d 所以问题可能重复,不包括我的情况。

有人可以帮助我吗?

您可以使用:

([0-9]{1,3}(?:.[0-9]{3})*,[0-9]+)s?€

这将在捕获组中匹配 1-3 位数字。然后在组中重复一个点和 3 位数字,最后将匹配一个逗号,后跟一个或多个数字。

捕获组后s?[€]匹配但不属于该组。

如果要在逗号后精确匹配 2 位数字,可以将,[0-9]+更新为,[0-9]{2}

作为替代方案,您可以在没有捕获组的情况下匹配您的值,并使用积极的前瞻(?=s?[€])来断言右侧的是一个可选的空格字符,后跟

[0-9]{1,3}(?:.[0-9]{3})*,[0-9]+(?=s?€)

我猜你在变量或其他东西中得到了这个值,为什么不尝试用

$value = substr($dataReceivedFromA, 0, -1);  // returns "2.550,00 "

我真的认为如果你只想摆脱标志,在这里使用正则表达式是没有意义的

最新更新