我有这样的字符串:
" 1 -2 -0.00529366960223319 -1.72662226752857E-5 some text"
我想将数字解析为数组,使用javascript删除文本,以返回:
[1, -2, -0.00529366960223319, -1.72662226752857E-5]
我尝试了很多表达式,如下所示:
/ [ - +] [0-9] * [0-9] +([EE] [ - +] [0-9] +)???/
没有成功,有什么帮助?
提前感谢!
答案 0 :(得分:4)
你不需要正则表达式:
function isNumeric(n) { /* http://stackoverflow.com/a/1830844/1529630 */
return !isNaN(parseFloat(n)) && isFinite(n);
}
var str = "1 -2 -0.00529366960223319 -1.72662226752857E-5 some text",
arr = str.split(" ").filter(isNumeric).map(Number);
答案 1 :(得分:0)
您可以使用此正则表达式:/[-+]?\d*\.?\d+([eE][-+]?\d+)?/g
你快到了。
如果你真的想要它,请记住逃避.
之类的所有特殊标志,否则它将与任何角色相匹配
正则表达式末尾的g
启用全局匹配。
var src = "+1 -2 -0.00529366960223319 -1.72662226752857E-5 some text 25e46";
var reg = /[-+]?\d*\.?\d+([eE][-+]?\d+)?/g;
res = src.match(reg);
// The matches are in elements 0 through n.
for (var i = 0; i < res.length; i++) {
document.body.innerHTML += "submatch " + i + ": " + res[i] + "<br/>";
}