我有这个字符串:
var s = 'http://xxxxxxx.xxx/abcd123456789?abc=1';
我如何获得数字123456789(在“d”和“?”之间)?
这些数字可能会有所不同。数字位数也可能不同。
我如何得到它们?正则表达式?哪一个?
答案 0 :(得分:5)
尝试
'http://xxxxxxx.xxx/abcd123456789?abc=1'.match(/\d+(?=\?)/)[0];
// ^1 or more digits followed by '?'
答案 1 :(得分:1)
尝试
var regexp = /\/abcd(\d+)\?/;
var match = regexp.exec(input);
var number = +match[1];
答案 2 :(得分:0)
数字是否始终在“abcd”和“?”之间?
如果是,那么您可以使用substring():
s.substring(s.indexOf('abcd'), s.indexOf('?'))
如果没有,那么你可以逐个字符循环并检查它是否为数字:
var num = '';
for (var i = 0; i < s.length; i++) {
var char = s.charAt(i);
if (!isNaN(char)) {
num += char;
}
}
答案 3 :(得分:0)
是的,正则表达式是正确的答案。你会有这样的事情:
var s = 'http://xxxxxxx.xxx/abcd123456789?abc=1';
var re = new RegExp('http\:\/\/[^\/]+\/[^\d]*(\d+)\?');
re.exec(s);
var digits = $1;