javascript提取浮点数正则表达式不正确匹配

问题描述 投票:0回答:1

我有下面的javascript程序-

var rx = /^the values should(?: between (\d+(\.\d+)?) and (\d+(\.\d+)?))$/;
var sentence = "the values should between 1.1 and 2.7";
var arr = rx.exec(sentence);
console.log(JSON.stringify(arr));

我想从匹配的行中提取数字 1.1 和 2.7 到一个数组中。

当我运行上面的程序时,我得到以下结果

["the values should between 1.1 and 2.7","1.1",".1","2.7",".7"]

在上面的程序中,

1.1
变成了
.1
2.7
变成了
.7

如何在javascript中正确匹配它。

javascript regex regex-group
1个回答
0
投票

Pointy在他/她的评论中建议更好地使用非捕获括号是正确的:

(?: ... )
,以避免不必要的捕获。 我还了解到输出数组的第一个元素是不需要的,因此您可以使用
.shift
函数将其删除。 您的代码可能是:

var rx = /^the values should(?: between (\d+(?:\.\d+)?) and (\d+(?:\.\d+)?))$/;
var sentence = "the values should between 1.1 and 2.7";
var arr = rx.exec(sentence);
arr.shift(); // Remove the first element of the array.
console.log(JSON.stringify(arr));

© www.soinside.com 2019 - 2024. All rights reserved.