php - 美元符号旁边的抓取数字,可选千位和小数

标签 php regex

我正在尝试获取一个格式为 $5,000.23 以及 $22.43 或 $3,000 的数字

这是我的正则表达式,这是用 PHP 编写的。

preg_match('/\$([0-9]+)([\.,]*)?([0-9]*)?([\.])?([0-9]*)?/', $blah, $blah2);

它似乎可以很好地匹配 $5,500.23 格式的数字,但它似乎不能很好地匹配任何其他数字,例如 $0。

如何让一切都成为可选的?不应该将 () 分组并使用问号吗?

最佳答案

这应该可以解决问题:

\$[\d,.]*[\d]

Regular expression visualization

Debuggex Demo


特定的 PHP 示例:

$re = "/\\$[\\d,.]*[\\d]/"; 
$str = "\$1 klsjdfgsjdfg \$100 kjdfhglsjdfg \$1,000 jljsdfg \$1,000.00 ldfjhsdf"; 

preg_match_all($re, $str, $matches);

Regex 101 Demo

关于php - 美元符号旁边的抓取数字,可选千位和小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792808/

相关文章:

php - 动态地将图像从 URL 加载到 div 中

PHP GET 变量带破折号

javascript - 在 Yii 中进行 onKeyPress 事件的正确方法是什么?

php - 电子商务 | WordPress - WC_Cart::set_quantity -

.net - 将 PHP 正则表达式转换为 .NET

javascript - 正则表达式用@here 或空白转义 <!here|@here> 的所有匹配项

PHP 在建立数据库连接时包含错误

javascript - 正则表达式: Match whole numbers in string

c# - 用于检查号码的正则表达式以 '078' 开头且仅包含 10 位数字

regex - 使用正则表达式过滤的 JsonPath 表达式