我有下面的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中正确匹配它。
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));