只从带有正则表达式的网址获取图像文件名

时间:2016-06-14 09:06:47

标签: javascript regex

我听说世界上有两个人:那些知道如何正则表达的人和那些永远不会知道的人。我想我是2型: - /

我有这个网址:

http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1 

我需要一个只提取文件名1-102332-2234.jpg

的正则表达式

文件的结尾可以是一切。和参数"?w = ..."没有必要。

我们正努力让它连续工作2天......任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:4)

我接受了@ gurvinder372的回答并尝试解释它以便更好地理解

/[\w-]+.(jpg|png|txt)/g

解释正则表达式的作用:

/:分隔符,表示正则表达式的开头和结尾

[\w-]:括号[]包含一组字符的临时定义。在这种情况下,该集合首先应包括预定义字符集\w的所有字符,定义为所有字母数字字符和下划线;此外,字符集应包含不属于预定义字符集-的连字符\w

+:是字符集定义后的几个可能的量词之一,它说:“至少出现一次指定字符集的元素”(其他量词是* = 0,1或更多次出现,? = 0或1次出现,{n,m} =至少n次,最多出现m次。

.:点表示任意(“任意”)字符。这里的真正含义是\.,即.字符。 “any”说明符在这里偶然发挥作用,因为点是一个字符!

(jpg|png|txt)交替:在.任意字符后,应该出现一个由竖线分隔的字符序列。

/g:在分隔符/完成正则表达式后,可以使用多个修饰符。这里的修饰符g指示像match()这样的函数查找与正则表达式匹配的尽可能多的字符串子序列。如果省略,则在找到模式的第一个匹配后,正则表达式引擎将停止搜索。实际上,在这种情况下这是完全足够的,因为URL应该只包含一个文件名,因此它可以在找到匹配后停止。

答案 1 :(得分:3)

试试这个正则表达式

/[\w-]+\.jpg/g

并支持更多文件扩展名

/[\w-]+\.(jpg|png|txt)/g



var output = "http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1".match(/[\w-]+\.jpg/g);

console.log(output);

//covering other file extensions
var output = "http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1".match(/[\w-]+\.(jpg|png|txt)/g);

console.log(output);