正则表达式匹配页面中的任何货币

时间:2014-08-25 03:45:28

标签: javascript php regex

想要一个字符串填充文本并从中提取价格。例如,这里应该匹配的内容:

$1,234.55
$90.99
$90
$100.30
$203

这里的正则表达式帮助会很棒,非常感谢你们的时间!这将用于PHP或Javascript。

3 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式匹配所有价格字符串,

\$\d+(?:,\d+)*(?:\.\d+)?

DEMO

<强>解释

  • \$匹配文字$符号。
  • \d+匹配一个或多个数字。
  • (?:,\d+)*匹配逗号和以下数字零次或多次。
  • (?:\.\d+)?匹配一个点和以下数字。 ?将整场比赛视为可选项。

答案 1 :(得分:0)

<强>多田:

\$[\d,]+(?:\.\d+)?

Here it is in practice

答案 2 :(得分:0)

试试这个/^\$(\d{1,3}(?:,\d{3})*)(?:\.(\d{1,2}))?$/

"$1,121,234.55".match(/^\$(\d{1,3}(?:,\d{3})*)(?:\.(\d{1,2}))?$/);

(JS代码)

这适用于以下模式:

$1
$2.21
$56,231
$12,212.12
$56,823,163.12

第一组$1将是全部美元(例如没有美分),第二组$2将是美分。

详细说明:

  • \$是美元符号
  • (\d{1,3}(?:,\d{3})*)捕获整个美元价值
    • \d{1,3}这是前三位数字
    • (?:,\d{3})*前三位后的所有内容
  • (?:\.(\d{1,2}))?捕获分数,这是可选的
    • (?:\.忽略点
    • (\d{1,2})并抓住分数
祝你好运!