Javascript 仅从带有正则表达式的url获取图像文件名
我听说世界上有两个人:一个知道如何注册的人,另一个永远不会知道的人。我想我是第二类:-/ 我有这个网址:Javascript 仅从带有正则表达式的url获取图像文件名,javascript,regex,Javascript,Regex,我听说世界上有两个人:一个知道如何注册的人,另一个永远不会知道的人。我想我是第二类:-/ 我有这个网址: http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1 我需要一个只提取文件名1-102332-2234.jpg的正则表达式 文件结尾可以是所有带有。参数“?w=…”不是必需的 我们正在努力让它工作两天现在。。。任何帮助都将不胜感激 试试这个正则表达式 /[\w-]+\.jpg/g 并支持更多的文件扩展
http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1
我需要一个只提取文件名1-102332-2234.jpg的正则表达式
文件结尾可以是所有带有。参数“?w=…”不是必需的
我们正在努力让它工作两天现在。。。任何帮助都将不胜感激 试试这个正则表达式
/[\w-]+\.jpg/g
并支持更多的文件扩展名
/[\w-]+\.(jpg|png|txt)/g
var输出=”http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1“.match(/[\w-]+\.jpg/g);
控制台日志(输出);
//涵盖其他文件扩展名
变量输出=”http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1.match(/[\w-]+\(jpg | png | txt)/g);
控制台日志(输出)代码>我接受@gurvinder372的答案,并试图解释它以便更好地理解
/[\w-]+.(jpg|png|txt)/g
要解释正则表达式的作用:
/
:分隔符,表示正则表达式的开始和结束
[\w-]
:括号[
和]
包含一组字符的特殊定义。在这种情况下,该集首先应包括预定义字符集\w
的所有字符,定义为所有字母数字字符和下划线;此外,字符集应包含不属于预定义字符集的连字符-
+
:是遵循字符集定义的几种可能的量词之一,它表示:“指定字符集的元素至少出现一次”(其他量词为*
=0、1或更多出现次数,?
=0或1出现次数,以及{n、m}
=至少n次,最多m次
:点表示任意(“任意”)字符。这里真正的意思是\。
,字符
。“任意”说明符在这里偶然工作,因为点是一个字符
(jpg | png | txt)
:交替:在
任意字符之后,应该出现由垂直条分隔的字符序列之一
/g
:分隔符/
完成正则表达式后,可以使用几个修饰符。此处的修饰符g
指示类似match()的函数
查找尽可能多的与正则表达式匹配的字符串子序列。如果要输入,正则表达式引擎将在找到模式的第一个匹配项后停止搜索。实际上,在这种情况下,这就足够了,因为URL应该只包含一个文件名,所以在找到后可以停止搜索匹配。“http://myserver.com/_images/1-102332-2234.jpg?w=800&h=400&c=1“.match(/\/([^?\/]+)(?=\?$)/)[1]
@WiktorStribiżew为什么不回答?@gurvinder372:我相信这个问题是其他许多问题的重复。如果我找到一个好的源代码,我会标记这个。我不喜欢回答明显的重复。这里,也许是一个很好的源代码候选者。
在正则表达式中匹配除换行符以外的任何字符,你想逃避它。g+
匹配一封或多封g
信,为什么?@WiktorStribiżew谢谢,你像往常一样是对的:)。我已经采纳了您的建议。“发现字符”/“ist”错误。”。前导的/
只是正则表达式的分隔符。“concat”一词具有误导性,括号内的条表示备选方案。另外,g
修饰符是不必要的,因为URL可能只包含一个图像文件名。你能更新我的答案吗?有了正确的解释,我已经更新了文本(它现在被标记为“同行评审”,所以你可能还看不到它?)。看到了,显然需要时间,我已经批准了你的编辑:)谢谢