我听说世界上有两个人:那些知道如何正则表达的人和那些永远不会知道的人。我想我是2型: - /
我有这个网址:
http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1
我需要一个只提取文件名1-102332-2234.jpg
的正则表达式文件的结尾可以是一切。和参数"?w = ..."没有必要。
我们正努力让它连续工作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);