Javascript 获取最后一个破折号和最后一个点之间的字符串

Javascript 获取最后一个破折号和最后一个点之间的字符串,javascript,jquery,regex,Javascript,Jquery,Regex,简单的问题,但我对正则表达式不太了解 http://foo.com/bar/image/abc.jpg 如何在javascript中使用正则表达式仅获取abc 不使用正则表达式如何: var str = "http://foo.com/bar/image/abc.jpg" str.split("/").slice(-1)[0].split(".")[0] 不使用正则表达式如何: var str = "http://foo.com/bar/image/abc.jpg" str.split("/

简单的问题,但我对正则表达式不太了解

http://foo.com/bar/image/abc.jpg
如何在javascript中使用正则表达式仅获取abc

不使用正则表达式如何:

var str = "http://foo.com/bar/image/abc.jpg"
str.split("/").slice(-1)[0].split(".")[0]
不使用正则表达式如何:

var str = "http://foo.com/bar/image/abc.jpg"
str.split("/").slice(-1)[0].split(".")[0]
您可以使用以下选项:-

var url = 'http://foo.com/bar/image/abc.jpg'
var fileName = url.substring(url.lastIndexOf('/') + 1, url.lastIndexOf('.'));
这将给你的abc。只有一行代码:

您可以使用:-

var url = 'http://foo.com/bar/image/abc.jpg'
var fileName = url.substring(url.lastIndexOf('/') + 1, url.lastIndexOf('.'));
这将给你的abc。只有一行代码:

正则表达式版本:

var result = 'http://foo.com/bar/image/abc.jpg'.match(/[^\/]+(?=\.jpg$)/)[0];
对后代的解释:

match函数返回一个结果数组,但这里我确定只有一个结果,因为我的模式被锚定到字符串的末尾,因此我选择了索引[0]

正则表达式:

[^\/]+     all that is not a slash one or more times
(?=\.jpg$) is a lookahead that mean: followed by .jpg 
$          stand for the end of the string 
正则表达式版本:

var result = 'http://foo.com/bar/image/abc.jpg'.match(/[^\/]+(?=\.jpg$)/)[0];
对后代的解释:

match函数返回一个结果数组,但这里我确定只有一个结果,因为我的模式被锚定到字符串的末尾,因此我选择了索引[0]

正则表达式:

[^\/]+     all that is not a slash one or more times
(?=\.jpg$) is a lookahead that mean: followed by .jpg 
$          stand for the end of the string 

你试过什么?你也用谷歌搜索过吗?最后,为什么一定要用正则表达式?你试过什么?你也用谷歌搜索过吗?最后,为什么一定要用正则表达式呢?这是2005年的事。正确的解决方案是使用JS提供的数组聚合函数。像split这样的事情,etc@Bojangles我不同意。字符串切碎是一个完全可以接受的解决方案+1这是非常重要的。正确的解决方案是使用JS提供的数组聚合函数。像split这样的事情,etc@Bojangles我不同意。字符串切碎是一个完全可以接受的解决方案+1将[0]替换为shift think multiple怎么样。characters@ErikE好建议-解决方案针对OP的特定问题。但是你是对的,如果文件名有多个.s,那么shift将只返回第一个结果。这取决于要求。。。如果abc.test.jpg应返回abc.test或仅返回abc。。。好的方面。不如[0]而不是shift多想一想。characters@ErikE好建议-解决方案针对OP的特定问题。但是你是对的,如果文件名有多个.s,那么shift将只返回第一个结果。这取决于要求。。。如果abc.test.jpg应返回abc.test或仅返回abc。。。但也有好的观点。如果你能解释你是如何得出答案的,而不是仅仅给出答案,那么未来将更适用于更广泛的人群。如果你能解释你是如何得出答案的,而不是仅仅给出答案,那么未来将更适用于更广泛的人群。