我有文字:
<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 "
我真的认为如果你只想摆脱标志,在这里使用正则表达式是没有意义的