首页 > 解决方案 > 如何使用正则表达式查找以“$”开头的所有数字

问题描述

我正在处理包含非逗号分隔的美元值的字符串。例如:

“第 2 批 - 650000 美元”

我需要能够找到“$ 650,000”并将其替换为“$ 650,000”。

问题是,当谈到正则表达式时,我是一个完全的新手。我发现一个帖子建议这个查找数字:

preg_match_all('!\d+!', $string, $matches);

这确实成功地在我的字符串中找到了“2”和“650000”。但是,我想确保我只得到以“$”开头的数字,所以我只想得到“$650000”。

谁能帮我调整正则表达式以仅获取以“$”开头的数字?

标签: phpregex

解决方案


只需在您的模式中添加美元符号并使用preg_replace_callback然后组合number_format。像这样的东西:

$string = preg_replace_callback('~\$(\d+)~', function($matches) {
    return !empty($matches[1]) ? '$' . number_format($matches[1]) : null;
}, $string);

推荐阅读