Regex将标记图像模式与给定的文件名相匹配
Regex to match markdown image pattern with the given filename
我想用一个空字符串替换文本区域中给定文件名的markdown图像模式。
所以图案是![alt](http://somehost/uploads/filename.jpg)
这是我现在的代码:
var content = target.val();
var fileName = someDynamicValue;
var regex = new RegExp(RegExp.escape('![') + '.*' + RegExp.escape(']') + RegExp.escape('(') + '.*' + RegExp.escape(fileName) + RegExp.escape(')'), 'i');
var found = regex.exec(content);
var newContent = content.replace(regex, "");
target.val(newContent);
RegExp.escape= function(s) {
return s.replace(/[-'/''^$*+?.()|[']{}]/g, '''$&')
};
例如CCD_ 2。然后我需要匹配![alt](http://somehost/uploads/filename.jpg)
并用一个空字符串替换它。
如果content
包含一个图像,则一切都很好。但如果不止一个,例如:
一些文本
![alt](http://somehost/uploads/filename.jpg)
一些文本![alt2](http://somehost/uploads/filename2.jpg)
更多的文本。
则var found
包括![alt](http://somehost/uploads/filename.jpg)![alt2](http://somehost/uploads/filename2.jpg)
,但我只需要匹配![alt](http://somehost/uploads/filename.jpg)
。
在这种情况下,我需要什么正则表达式?
使用非贪婪量词即可:
!'[(.*?)']'((.*?)')
您可以在线查看:https://regex101.com/r/kfi8qI
不确定如何将字符串组合在一起,但'.*'
贪婪地匹配到最后一个文件名
所以,它可能应该是'.*?'
。
但是,如果文件名不同,则不应该匹配
另一件事是,您通常应该用
阻止它超过下一个[alt]
类似'[^'[']]*'
编辑:
RegExp.sescape('![')+'.*'
+RegExp.sEscape(']')+RegExp.eescape;
是罪魁祸首。
尝试
RegExp.escape('![') + '[^']]*' + RegExp.escape(']') + RegExp.escape('(') + '[^'[']]*?' + RegExp.escape(fileName) + RegExp.escape(')'), 'i');
- 使用文件夹路径名保存所有图像文件和文件名
- Javascript从包含日期的文件名创建图像库
- 提取扩展名为JS的图像文件名
- 将生成的随机数存储在变量中,然后将该变量作为文件名调用以显示图像.Javascript
- Regex将标记图像模式与给定的文件名相匹配
- 通过画布从 svg 或 svg 输出 300 张具有正确文件名的 png 图像
- 直接从Javascript输入/传递图像到输入类型=“文件名”
- 从Div获取图像文件名,并将其复制到悬停按钮上的文本字段中
- 如何使用Meteor提供文件名中有空格的静态图像
- 如何在密文编辑器中使用图像文件名
- Highcharts:如何在window.location.href中将图像导出到本地磁盘中指定文件名
- 用jquery替换图像文件名
- 用JavaScript/jQuery加载本地图像,我知道位置,但不知道文件名
- 在选择文件(web)后显示图像文件名
- 显示多个图像文件名和图像缩略图
- jCarousel:获取当前显示的图像的文件名(路径)(一次只显示一个)
- 我'我想有我的图像文件名/路径时使用Jest快照
- 使用multer在node.js(express)中保留上传后的图像文件名和扩展名
- Jquery /javascript替换路径中的图像文件名
- 使用javascript通过第一个字符获取图像文件名