在JavaScript中使用Regex从字符串中获取数字数组,包括负数和浮点数

时间:2017-11-26 19:37:47

标签: javascript regex

我想使用JavaScript从字符串中检索所有数字,甚至是负数和小数。理想情况下,这些数字将在数组中。

Examples:
'1 2.5 5' ---> [1, 2.5, 5]
'-4.7 abcd56,23' ---> [-4.7, 56, 23]

以下是我所拥有的:

function processUserInput() {
  let rawUserInput = document.getElementById("number-input").value;
  let negativeNumRegex = /^-?[0-9]\d*(\.\d+)?$/g;
  return negativeNumRegex.exec(rawUserInput);
}

这总是返回null。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:4)

在两端都有一个带有锚点的表达式和g标志很少有意义。 (它可以通过替换,但不是通常不会。)

我可能会使用更简单的东西:/-?[.\d]+/g



const rex = /-?[.\d]+/g;
console.log('1 2.5 5'.match(rex));
console.log('-4.7 abcd56,23'.match(rex));

.as-console-wrapper {
  max-height: 100% !important;
}




请注意,这并不会对4..2等内容进行验证。练习留给读者。 : - )

答案 1 :(得分:2)

这个正则表达式:

/^-?[0-9]\d*(\.\d+)?$/g

应该是:

/-?\d+(\.\d+)?/g

因此它可以在字符串中的任何位置找到数字,而不是从整个字符串的开头到结尾。

下次我建议你在regex101中测试你的正则表达式,你会发现它失败的原因。