1

我有一段代码正在抓取格式很差的价格。我只想使用正则表达式来清理它。
他们正在发送

$ 3 58

我想删除 $ 和空格,并将美元和美分之间的空格替换为 . 所以我得到:

3.58

我可以摆脱 $ 和领先的空间,但我真的被困在替换上。我知道

  Regex (.*) returns everything
  Regex \ (.*) returns '3 58'

但我真正想要的是

  3.58

我正在尝试在一个名为内容抓取器的程序中执行此操作,因此我只能访问正则表达式。

4

4 回答 4

0

$ 3 58您可以匹配您想要在替换中删除的内容并捕获您想要保留的内容。

匹配一个美元符号\$,然后匹配一个或多个空白字符\s+并在一组中捕获一个或多个数字(\d+)

在替换使用 group1 。组2。例如$1.$2

\$\s+(\d+)\s+(\d+)

于 2018-06-26T08:21:08.707 回答
0

您可以使用 2 个捕获括号。

\D*(\d+)\D*(\d+)

\1.\2

于 2018-06-25T23:20:38.090 回答
0

似乎您只需要捕获两个以空格分隔的数字块并使用将用点连接组的命令:

(\d+) (\d+)
return $1.$2

由于该return命令只返回匹配的内容,因此无需匹配输入中的任何其他内容。

(\d+) (\d+)模式匹配并捕获到组 1 ( $1) 一个或多个数字,然后匹配一个空格(可\s+用于匹配 1+ 个空白字符),然后(\d+)再次模式匹配并捕获到组 2 ( $2) 一个或多个数字。

于 2018-06-25T23:24:54.133 回答
0

console.log(' $ 1 20'.replace(/[^0-9\ .]/g, '').trim().replace(/\ /g, '.'))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

于 2018-06-26T06:00:28.617 回答