正则表达式帮助,JS尝试将字符串(html)转换为数字

时间:2016-10-02 11:14:02

标签: javascript regex regex-lookarounds

我有这样的字符串:

<span class="label label-danger">€ -185,00</span>

我尝试使用js转换为:-185,00。

这就是我的所作所为:

x = x.replace(/[^\d\,-]/g, "");
x = parseFloat(x.replace(/,/, '.'));

它接近工作,但采取&#34; - &#34;班级&#34;标签危险&#34;所有正数变为负数,负数变为NaN( - 185)。

如何仅删除第一个&#34; - &#34;正则表达式的字符串?

4 个答案:

答案 0 :(得分:0)

如果您不喜欢RegEx,您可以使用纯JS,如:

var y = parseFloat(x.split("€")[1].split("<")[0]);
console.log(y); // -185

答案 1 :(得分:0)

试试这个:

<span(.*?)>([^\d]*)(-|\+){0,1}([-\d,]*)<\/span>



Group 3: (-|\+){0,1}: optional You get: `-`      
you get the sign here - or + or nothing(whic means plus)
Group 4.    ([-\d,]*) `185,00`

答案 2 :(得分:0)

首先使用javascript DOM获取元素

var string = document.getElementsByClassName("label label-danger")innerHTML;

然后使用javascript parseInt()函数将该字符串转换为整数

您可以通过创建执行所有内容的功能来执行此任务

答案 3 :(得分:-1)

如果您想提取数字,那么您可以使用以下代码段

console.log('<span class="label label-danger">€ -185,00</span>'.match(/[-+]?\d+(?:,\d+)+/)[0]);
console.log('$  +1,23,400'.match(/[-+]?\d+(?:,\d+)+/)[0]);

输出

-185,00
+1,23,400