有什么方法可以使用javascript在2个不同的特殊字符中提取字符串?

时间:2014-08-03 12:31:36

标签: javascript regex

您好,我的网址类似于: 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]

4 个答案:

答案 0 :(得分:3)

就像我在评论中所说,你不需要在字符类中转义/符号。而且你甚至也不需要一个角色类。只需\/即可。以下正则表达式将捕获一个或多个前面带有/符号并后跟_符号的数字。

\/(\d+)_

DEMO

> var image_id = image_url.match(/\/(\d+)_/)[1]
undefined
> image_id
'14628998490'

如果您不想在模式中提供\d+,也可以尝试这样做。

\/([^/]*?)_

DEMO

> 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)

字符串拆分比正则表达式更快。你可以在/的最后一次出现之后得到/和字符串的最后一个索引。我认为这将是更好的主意。