€正则表达式前的PHP Regex数量忽略小数

时间:2018-07-05 06:18:29

标签: php regex

我有文字:

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

和表达式:

#(\d+[\.\,]\d*?)\s?[€]#su
符合以下条件的

550,00

示例:regexr

如何匹配整体: 2.550,00吗?

p.s我不想将其他1000、900和数字与,和/或.进行匹配 换句话说,我要匹配d,d或d.d,d 因此问题possible duplicate不能解决我的情况。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

您可以使用:

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

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

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

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

作为替代方案,您可以不使用捕获组来匹配您的值,并使用正向前行(?=\s?[€])来断言右侧是可选的空白字符,后跟

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

答案 1 :(得分:0)

我猜你是在变量或其他东西中获得了该值,为什么不尝试通过

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

我真的认为,如果您只想摆脱符号,则在这里使用正则表达式毫无意义