javascript - 正则表达式从字符串中提取所有实数

标签 javascript regex

JavaScript 中的这个正则表达式仅返回给定字符串中的第一个实数,我期望一个包含两个的数组,因为我使用的是/g。我的错误在哪里?

/[-+]?[0-9]*\.?[0-9]+/g.exec("-8.075090 -35.893450( descr)")

返回:

["-8.075090"]

最佳答案

试试这个代码:

var input = "-8.075090 -35.893450( descr)";
var ptrn = /[-+]?[0-9]*\.?[0-9]+/g;
var match;
while ((match = ptrn.exec(input)) != null) {
    alert(match);
}

演示

http://jsfiddle.net/kCm4z/

讨论

exec 方法仅返回第一个匹配项。必须重复调用它,直到返回 null 才能获取所有匹配项。

或者,正则表达式可以这样写:

/[-+]?\d*\.?\d+/g

关于javascript - 正则表达式从字符串中提取所有实数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21750969/

相关文章:

php - 正则表达式的问题

java - java中通过正则表达式进行电子邮件验证

python - 如何在 Python 3 的 assertRegex 中表达多行正则表达式?

javascript - 如何将WaveSurfer js导出为音频文件?

javascript - 如何在 asp.net 和 javascript 中将文本框中键入的项目显示到另一个文本框或 div 中?

regex - 如何捕获两个标签之间的多行正则表达式?

javascript - 使用正则表达式 (regex) 替换 jQuery/JavaScript 中的选定文本

javascript - Vuex 状态不会被通用函数改变,而专用函数会改变它

Javascript 问题确认消息

Javascript:排序多维数组