繁体   English   中英

使用任何基于Javascript的库查找文件名的正则表达式

[英]Regular expression to find file name using any Javascript based library

我正在使用Markdown编辑器。 用户上传图像后,我看到在编辑器中输入了以下行。

![](/assets/img/content/id/2e65c657cf609fca24893278cdcb2159.gif)

我想要的是:我想通过搜索整个编辑器的内容来提取文件名。

假设我的编辑器上有以下内容:

Hello world.pdf
![](/assets/img/content/id/2e65c657cf609fca24893278cdcb2159.gif)
This is a test

![](/assets/img/content/id/2e65c657cf609fcaeqwe78cdcb2159.png)adding text

Adding another image

![](/assets/img/content/id/2e65c657cf609f24432434423b2159.jpg)

从上面的内容,运行正则表达式后,我应该能够得到:

2e65c657cf609fca24893278cdcb2159.gif
2e65c657cf609fcaeqwe78cdcb2159.png
2e65c657cf609f24432434423b2159.jpg

我已经尝试过这样的事情。 尽管可以正常工作,但我不确定它的最佳解决方案:

var myregex = /\(\/assets\/img\/content\/id\/(.+?)\)/gm

var result, allMatches = [];
while((result = myregex.exec(data)) != null) {
    var match = result[1]; // get the first match pattern of this match
    allMatches.push(match);
}

使用以下regex

var fileNames = content.match(/(\w+\.[a-z]{3,4})/gi);

REGEX说明

  1. /regex分隔符
  2. () :捕获组
  3. \\w+ :匹配任何一个或多个字母字符和_ (下划线)
  4. \\. :火柴. 文字
  5. [az]{3,4} :匹配3至4个字母
  6. gi :匹配所有出现的g且不区分大小写i

演示

JsFiddle演示

更新

var fileNames = content.match(/\!\[\].*?(\w+\.[a-z]{3,4})/gi);

fileNames = fileNames.toString();

var names = fileNames.match(/\w+\.[a-z]{3,4}/gi);
alert(names);

演示

试试这个(对于图像)

/(\\w+\\.(?:gif|png|jpe?g))/gi

演示

或任何文件类型

/(\\w+\\.(?:\\w{2,4}))/gi

演示

更新

基于对@Tushar答案的评论

(?:\\/assets\\/img\\/content\\/id\\/)(\\w+\\.(?:\\w{2,4}))

将找到具有前面路径/assets/img/content/id/任何文件。 正如javascript所说的标签之一,我们不能在后面使用正向

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM