您好,我的网址类似于:
http://farm4.staticflickr.com/3877/[image_id]_[secret].jpg
e.g。 http://farm4.staticflickr.com/3877/14628998490_233a15c423_q.jpg
我需要在整个网址之间的image_id
下划线之前提取14628998490
第一组数字(即 14628998490_233a15c423_q.jpg
) / p>
是否有提取image_id
的好方法?
现在我将使用:
var image_id = image_url.match(/[\/]([0-9]+)_/)[1]
答案 0 :(得分:3)
就像我在评论中所说,你不需要在字符类中转义/
符号。而且你甚至也不需要一个角色类。只需\/
即可。以下正则表达式将捕获一个或多个前面带有/
符号并后跟_
符号的数字。
\/(\d+)_
> var image_id = image_url.match(/\/(\d+)_/)[1]
undefined
> image_id
'14628998490'
或强>
如果您不想在模式中提供\d+
,也可以尝试这样做。
\/([^/]*?)_
> var image_id = image_url.match(/\/([^/]*?)_/)[1]
undefined
> image_id
'14628998490'
答案 1 :(得分:1)
不确定它是更好的方法,但你可以这样做:
var str = 'http://farm4.staticflickr.com/3877/[image_id]_[secret].jpg';
var image_id = str.split('/').pop().split('.')[0].split('_');
答案 2 :(得分:1)
如果特殊字符始终相同(_
),则可以先获取最后一部分(width substring + lastIndexOf),然后使用split():
var url = "http://farm4.staticflickr.com/3877/14628998490_233a15c423_q.jpg";
var splittedUrl = url.substr(url.lastIndexOf('/')+1).split("_");
var image_id = splittedUrl[0];
console.log(image_id);
我读过字符串函数比regexp更快的地方,所以你可以考虑这个选项。
答案 3 :(得分:0)
字符串拆分比正则表达式更快。你可以在/的最后一次出现之后得到/和字符串的最后一个索引。我认为这将是更好的主意。