php - 除数字和货币分母外,从字符串中去除所有内容

标签 php regex explode

我有以下示例字符串:

The price is $54.00 including delivery
On sale for £12.99 until December
European pricing €54.76 excluding UK

我只想从他们每个人那里返回价格和货币分母

$54.00
£12.99
€54.76

我的流程是拥有一组货币符号并搜索每个货币符号的字符串,然后只捕获之后空格之前的字符 - 然而,$ 67.00 将失败

那么,我能否遍历一组预设货币符号,然后分解字符串并在下一个非数字字符(不是 .或 , - 或者可能使用正则表达式

这可能吗?

最佳答案

在正则表达式中,\p{Currency_Symbol}\p{Sc} 代表任何货币符号。

然而,PHP supports仅需要简写形式 \p{Sc}/u 修饰符。


使用正则表达式模式

/\p{Sc}\s*\d[.,\d]*(?<=\d)/u

你将能够匹配例如:

  • 1,234 美元
  • £12.3
  • 5,345.01 欧元

如果你想使用 . 作为小数点分隔符和 , 作为千位分隔符,那么使用

/\p{Sc}\s*\d{1,3}(?:,\d{3})*(?:\.\d+)?/u

检查 this demo .

关于php - 除数字和货币分母外,从字符串中去除所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441125/

相关文章:

python - 正则表达式匹配或条件与 '|' 不工作

regex - R split on delimiter (split) 保留分隔符 (split)

php - 在 PHP 中使用多个条件分解字符串

php - 通过许多 url 在源代码中查找字符串的代码

php - 由逗号和新行一起展开

php - 我尝试实现 UPSERT 时遇到的问题

php - 如何检查数组是否包含空元素?

mysql - 如何检索一列中包含五位数字的所有行

php - 选择跨越 2 年(2012-2013)的所有生日

php - Google 翻译无法更改语言?