假设我有以下字符串:
<div style="color: red; display.: inline-block;"><i class="fa fa-arrow-down" aria-hidden="true"></i> -18.9%</div>
想要提取的是 -18.9
我目前在javascript中有[^ 0-9 .-] + 但是这将包括字符串中的每个点和连字符,所以我需要的东西只提取逗号和连字符后跟一个数字。
要清除,点和连字符可能存在也可能不存在,有时候不是html
答案 0 :(得分:0)
听起来你正在处理一个似乎是从HTML中获取的字符串。如果是这种情况,并且您无法获得var tempEl = document.createElement('div');
tempEl.innerHTML = '<div style="color: red; display.: inline-block;"><i class="fa fa-arrow-down" aria-hidden="true"></i> -18.9%</div>';
var myNumber = parseFloat(tempEl.children[0].innerText.trim())
属性,则有2个选项。
<强> 1。转换为HTML并使用innerText
-18.9
将导致数字
-
<强> 2。正则表达式强>
此正则表达式将匹配以/(-)?\d+(\.\d*)*/g
开头的字符串,后跟整数或十进制数
<div style="color: red; display.: inline-block;"><i class="fa fa-arrow-down" aria-hidden="true"></i> -18.9%</div>
使用您的示例:
-18.9
将导致匹配
quit()
这里是demo。
答案 1 :(得分:-1)
这是简单的正则表达式
[-0-9]+.?[0-9]