我有一系列这样的数字(版本):
1.6.8
1.9.7
(中间还有两位)
我应该如何只定位中间数字,即点和点之间的数字?
我尝试过这样的事情:
\.\d+(?=\.)
,并且定位中间的数字,也定位第一个点。
答案 0 :(得分:2)
像这样吗?
var myRegexp = /\d+\.(\d+)\.\d+/;
var match = myRegexp.exec('1.33.4');
console.log(match[1]); //33
var match = myRegexp.exec('441.54.12345647');
console.log(match[1]); //54
match = myRegexp.exec('13.2222.33');
console.log(match[1]); //2222
match = myRegexp.exec('version 1.2.3');
console.log(match[1]); //2
function getMiddle(inputversion) {
var myRegexp = /\d+\.(\d+)\.\d+/;
var match = myRegexp.exec(inputversion);
if(match != null) {
if(match.length > 0) {
return match[1];
}
}
return null;
}
console.log('should be 34:', getMiddle('my app version: 1.34.55'));
console.log('should be null:', getMiddle('my app needs no versions.it.is.awesome'));
组选择器()与最中间的数字匹配。
+确保可以捕获大于9的数字。
答案 1 :(得分:1)
我认为这里不需要使用正则表达式。您可以使用split
:
var versions = '1.6.8 1.9.7'
console.log(versions.split(' ').map(el => el.split('.')[1]))
如果您不想使用该方法,则可以使用regex,正如wiktor指出的那样:
var versions = '1.6.8 1.9.7'
console.log(versions.match(/(?<=\.)\d+(?=\.)/g))