从字符串中获取价格值

发布于 2024-12-27 08:51:04 字数 240 浏览 1 评论 0原文

我有一个字符串,其中价格值($544.50)可以位于字符串中的任何位置。 例如:HP G60-630US 笔记本电脑:笔记本电脑 | RadioShack.com --> $259.97 (radioshack.com)

我需要从字符串中获取值:259.97

为此,我尝试使用一些随机正则表达式。 但没有运气!

有人可以帮助我,提供一个正确的正则表达式字符串来从字符串中检索此价格值。

提前致谢。

I have a string, where price value($544.50) can be anywhere in the string.
eg: HP G60-630US Notebook: Laptops | RadioShack.com --> $259.97 (radioshack.com)

I need to get the value: 259.97 out of the string

For this i tried using some random regex's.
But no luck!

Can someone help me, giving a proper regex string for retrieving this price value from a string.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

两相知 2025-01-03 08:51:04

此正则表达式适用于多种货币: $ £ €

[\$\£\€](\d+(?:\.\d{1,2})?)

示例

This regex will work with multiple currencies: $ £ €

[\$\£\€](\d+(?:\.\d{1,2})?)

Example

忘你却要生生世世 2025-01-03 08:51:04

[$]?[0-9]*(\.)?[0-9]?[0-9]?

这应该与带有 $ 符号的内容匹配,并且那些没有的。

[$]?[0-9]*(\.)?[0-9]?[0-9]?

This should match those with a $ sign and those without.

对你再特殊 2025-01-03 08:51:04

像这样的东西可能会起作用:

/\$(\d*\.?\d+?)/

Something like this will probably work:

/\$(\d*\.?\d+?)/
[旋木] 2025-01-03 08:51:04

\$(\d*\.?\d*) 应该可以工作,不是最佳的,但可能有用。

(重要提示:转义 $ 和 .,它们是特殊字符)

\$(\d*\.?\d*) should work, not optimal but probably useful.

(Important: escape $ and ., which are special characters)

终弃我 2025-01-03 08:51:04

此函数查找字符串中的第一个十进制数字:

^[^\d]*(\d+|\d+((,|\.)\d{1,2}))(\s|[a-zA-Z)]|€|$).*
  • 仅查找具有 0-2 位小数点或允许逗号的数字 数字
  • 前后不需要空格 数字
  • 不得以任何分隔符结尾(例如 12.12. 或 12! 不是返回)
  • 数字可以以欧元符号结束 €
  • 适用于美国负数($1233.50)

This one finds first decimal number in a string:

^[^\d]*(\d+|\d+((,|\.)\d{1,2}))(\s|[a-zA-Z)]|€|$).*
  • looks only for numbers with 0-2 decimals decimal point or comma allowed
  • no need for spaces before or after the number
  • number must not end with any delimiter (eg. 12.12. or 12! is not returned)
  • number can end with Euro sign €
  • works on US negative numbers ($1233.50)
看轻我的陪伴 2025-01-03 08:51:04

这是替换和提取的方法

提取:

preg_match('/\$([0-9]+[\.]*[0-9]*)/',$string,$matches);
foreach($matches as $match) {
  echo $match."<br>";
}
//echo $matches[0]; for just the first match

修改/替换:

$string = preg_replace_callback('/\$([0-9]+[\.]*[0-9]*)/', function ($matches) {


            foreach ($matches as $match) {
                // only if value is !empty and higher than 0
                $tmp = str_replace("$", "", $match);
                if ($tmp > 0 && $tmp != "") {
                    //do something to $tmp in this case round to two decimal places
                    return "$" . round($tmp,2);

                }

            }

        }, $string);

在我的替换示例中可能有更好的方法来处理符号。

Here's a way to replace and extract

Extract:

preg_match('/\$([0-9]+[\.]*[0-9]*)/',$string,$matches);
foreach($matches as $match) {
  echo $match."<br>";
}
//echo $matches[0]; for just the first match

Modify/Replace:

$string = preg_replace_callback('/\$([0-9]+[\.]*[0-9]*)/', function ($matches) {


            foreach ($matches as $match) {
                // only if value is !empty and higher than 0
                $tmp = str_replace("$", "", $match);
                if ($tmp > 0 && $tmp != "") {
                    //do something to $tmp in this case round to two decimal places
                    return "$" . round($tmp,2);

                }

            }

        }, $string);

There's probably a better way to handle the symbol on my replacement example.

时光与爱终年不遇 2025-01-03 08:51:04

正则表达式过滤掉数字:
字符串正则表达式 = ([0-9]+[, .]?)+
您可以这样使用它:

CurrencySymbol + regex
正则表达式 + 货币符号

Regex to filter out number:
String regex = ([0-9]+[, .]?)+
You can use it like this:

CurrencySymbol + regex
regex + CurrencySymbol

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文