我有這個字符串:如何從此字符串中獲取數字?
var s = 'http://xxxxxxx.xxx/abcd123456789?abc=1';
如何獲得數字123456789(之間的 「d」 和 「?」)?
這些數字可能會有所不同。數字的數量也可能會有所不同。
我如何得到它們?正則表達式?哪一個?
我有這個字符串:如何從此字符串中獲取數字?
var s = 'http://xxxxxxx.xxx/abcd123456789?abc=1';
如何獲得數字123456789(之間的 「d」 和 「?」)?
這些數字可能會有所不同。數字的數量也可能會有所不同。
我如何得到它們?正則表達式?哪一個?
嘗試
'http://xxxxxxx.xxx/abcd123456789?abc=1'.match(/\d+(?=\?)/)[0];
// ^1 or more digits followed by '?'
嘗試
var regexp = /\/abcd(\d+)\?/;
var match = regexp.exec(input);
var number = +match[1];
你的正則表達式是不正確的。根據jsbin.com – DrStrangeLove
@DrStrangeLove:錯字固定。 – marc
是數字總是 「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;
}
}
是的,正則表達式是正確答案。你會有這樣的事情:
var s = 'http://xxxxxxx.xxx/abcd123456789?abc=1';
var re = new RegExp('http\:\/\/[^\/]+\/[^\d]*(\d+)\?');
re.exec(s);
var digits = $1;
超前匹配(「?=」)僅適用於JavaScript 1.5,因此對於較舊的瀏覽器,您可能會考慮使用「?」前瞻性匹配並從匹配結果中剝離最後一個字符。 –
@Anndrew:是的,就像''http://xxxxxxx.xxx/abcd123456789?abc=1'.match(/ \ d + \?/)[0] .match(/ \ d + /)[0]' – KooiInc
@安德魯:順便說一句,你能指出我的來源嗎?我看到遠遠早於js1.2描述的前瞻(例如https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions) – KooiInc