我有以下示例字符串:
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/