正则表达式将图像标记解析为图像html javascript
我用这个表达: 在html中创建图像正则表达式将图像标记解析为图像html javascript,javascript,html,regex,markdown,Javascript,Html,Regex,Markdown,我用这个表达: 在html中创建图像 "<img alt='image (2).png' src='https://dev.azure.com/image.png' />" 我得到这个html "<img alt='image (2).png' src='https://dev.azure.com/image%20(2' />".png) “”.png) 这个问题是由正则表达式中的“(2)”括号引起的。 有一个正则表达式可以应
"<img alt='image (2).png' src='https://dev.azure.com/image.png' />"
我得到这个html
"<img alt='image (2).png' src='https://dev.azure.com/image%20(2' />".png)
“”.png)
这个问题是由正则表达式中的“(2)”括号引起的。
有一个正则表达式可以应用于两种情况吗?试试这个正则表达式:
// ( $1 ) ( $2 )
// ! [ (any char except \]) ] ( any char except \) )
// | |
// \ / \ /
/\!\[([^\]]+)\]\(([^\)]*))/
可以有多种方法从示例数据中获取匹配 其中一个选项是使匹配更加具体,直到最后出现一个点为止,匹配非空白字符,然后例如匹配1+字字符或匹配
png
,字面上后跟右括号
!\[(.*?)]\((https?:\/\/\S+\.\w+)\)
解释
匹配\[
![
捕获组1,尽可能匹配除换行符以外的任何字符(.*)
匹配]\(
](
捕获第2组(
将协议与可选的s匹配,后跟https?:\/\/
:/
匹配1+个非空白字符,然后匹配最后一个点和1+个单词字符\S+\.\w+
关闭组1并匹配)\)
)
似乎您需要一个堆栈/递归/实解析器来可靠地捕获这一点。考虑<代码> [Fo](Bar(4(5(6)7)())([]]])< /COD>是合法的文件名,对吗?你可以作弊并假设扩展名以
字符开头,但对我来说似乎是自以为是的,除非这实际上是在降价规范中(如果是的话,我会感到惊讶)。一个选项是,当右括号前面是一个开头的括号,后面是1+位,则排除匹配的右括号\[(.*?\]\(.*?)您也可以在右括号后声明一个非空白字符,但当文件名本身!\[(.*?)\]\(.*?)(?!\S)
中右括号后有空格时,该字符将中断(https?:\/\S+.\w+)
@Thefourthbird您的解决方案是正确的。请上传您的答案以结束此问题。如果此解决方案不起作用,请说明原因。不作解释的否决投票有点粗鲁。
"<img alt='image (2).png' src='https://dev.azure.com/image%20(2' />".png)
// ( $1 ) ( $2 )
// ! [ (any char except \]) ] ( any char except \) )
// | |
// \ / \ /
/\!\[([^\]]+)\]\(([^\)]*))/
!\[(.*?)]\((https?:\/\/\S+\.\w+)\)