我想使用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。任何帮助表示赞赏!
答案 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中测试你的正则表达式,你会发现它失败的原因。