使用正则表达式仅从 url 获取图像文件名

Nic*_*ico 0 javascript regex

我听说世界上有两种人:知道如何使用正则表达式的人和永远不会知道的人。我想我是类型 2 :-/

我有这个网址:

http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1 
Run Code Online (Sandbox Code Playgroud)

我需要一个只提取文件名 1-102332-2234.jpg 的正则表达式

文件结尾可以是带有 . 并且参数“?w=...”不是必需的。

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

gur*_*372 5

试试这个正则表达式

/[\w-]+\.jpg/g
Run Code Online (Sandbox Code Playgroud)

并支持更多文件扩展名

/[\w-]+\.(jpg|png|txt)/g
Run Code Online (Sandbox Code Playgroud)


Ayy*_*oub 5

我接受@gurvinder372 的答案并尝试对其进行解释以更好地理解

/[\w-]+.(jpg|png|txt)/g
Run Code Online (Sandbox Code Playgroud)

解释正则表达式的作用:

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

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

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

.:点表示任意(“任何”)字符。这里真正的意思是\.,角色.。“any”说明符在这里偶然起作用,因为点是一个字符!

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

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