Javascript 从字符串中获取最后2个数字:';矩阵(1,0,0,1,3,5)和#x27;
我正试图从类似“矩阵(1,0,0,1,3,5)”的字符串中获取数字3和5。我的第一个想法是在逗号上使用Javascript 从字符串中获取最后2个数字:';矩阵(1,0,0,1,3,5)和#x27;,javascript,jquery,regex,Javascript,Jquery,Regex,我正试图从类似“矩阵(1,0,0,1,3,5)”的字符串中获取数字3和5。我的第一个想法是在逗号上使用.split(),但这将使我得到3和5作为结果,当然必须有更干净的方法来使用正则表达式获取它们并将其拆分成那样?因此,不需要执行冗长的操作来获取干净的值 编辑,字符串结构始终相同,只更改数字。您可以使用切片: var s = 'matrix(1, 0, 0, 1, 3, 5)'; var m = s.match(/\d+/g).slice(-2); //=> ["3", "5"] 编辑:
.split()
,但这将使我得到3和5作为结果,当然必须有更干净的方法来使用正则表达式获取它们并将其拆分成那样?因此,不需要执行冗长的操作来获取干净的值
编辑,字符串结构始终相同,只更改数字。您可以使用
切片:
var s = 'matrix(1, 0, 0, 1, 3, 5)';
var m = s.match(/\d+/g).slice(-2);
//=> ["3", "5"]
编辑:
如果要匹配(…)
之间的数字,请使用:
var m = s.replace(/^.*?\(([^)]+)\).*$/, '$1').match(/\d+/g).slice(-2)
//=> ["3", "5"]
只是为了好玩(因为它有效:))
然后像这样使用它
var matrixStr = 'matrix(1, 0, 0, 1, 3, 5)';
console.log( getMatrixArgs(matrixStr) );
// [3, 5]
免责声明
如果值是未过滤的用户输入,则这是不安全的。我提出这个建议只是作为正则表达式的一种替代方法。此代码支持任何“参数”(例如:'matrix(1,0,2,3.35,9.87739)
或'matrix(“foo”,“bar”)”
等)。字符串是否总是包含相同数量的值,或者是否可以包含类似matrix(1,2,3,4,5,6,7,8,9,…)的字符串。
用两组获取最后两个数字的正则表达式:(\d+)**(\d+*\)*$
,在逗号和结尾处带有可选空格。
function getMatrixArgs(str) {
return new Function('matrix', 'return ' + s)(function matrix() {
return Array.prototype.slice.call(arguments, -2);
});
}
var matrixStr = 'matrix(1, 0, 0, 1, 3, 5)';
console.log( getMatrixArgs(matrixStr) );
// [3, 5]