php - 如何使用正则表达式查找以“$”开头的所有数字
问题描述
我正在处理包含非逗号分隔的美元值的字符串。例如:
“第 2 批 - 650000 美元”
我需要能够找到“$ 650,000”并将其替换为“$ 650,000”。
问题是,当谈到正则表达式时,我是一个完全的新手。我发现一个帖子建议这个查找数字:
preg_match_all('!\d+!', $string, $matches);
这确实成功地在我的字符串中找到了“2”和“650000”。但是,我想确保我只得到以“$”开头的数字,所以我只想得到“$650000”。
谁能帮我调整正则表达式以仅获取以“$”开头的数字?
解决方案
只需在您的模式中添加美元符号并使用preg_replace_callback
然后组合number_format
。像这样的东西:
$string = preg_replace_callback('~\$(\d+)~', function($matches) {
return !empty($matches[1]) ? '$' . number_format($matches[1]) : null;
}, $string);
推荐阅读
- c++ - 如何使我的 cmake 目标用于 catch2 测试和项目运行更可扩展和更合理?
- sql - 补齐 SQL 查询中的空白
- python - Python 中的索引错误:“字符串索引超出范围”
- javascript - 在移动浏览器上使用 Cache API 的最大文件大小是多少
- ios - 动画 CIFilter CIPerspectiveCorrection
- typescript - 错误:键入“数字 | undefined' 不可分配给类型 'number | { valueOf(): 数字; }'?
- mysql - MySQL搜索精确匹配
- javascript - 如何在 Observable 笔记本上使用 svg.js
- arduino-uno - 我如何连接我的原型并将结果导出到原型?
- php - How to sum numbers which is appearing as a String?