正则表达式将图像标记解析为图像html javascript

正则表达式将图像标记解析为图像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)”括号引起的。 有一个正则表达式可以应

我用这个表达:

在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)”括号引起的。 有一个正则表达式可以应用于两种情况吗?

试试这个正则表达式:

//        (    $1           )    (     $2             )
//    ! [ (any char except \]) ] ( any char except \) )
//    |    |
//   \ /  \ /   

       

/\!\[([^\]]+)\]\(([^\)]*))/

可以有多种方法从示例数据中获取匹配

其中一个选项是使匹配更加具体,直到最后出现一个点为止,匹配非空白字符,然后例如匹配1+字字符或匹配
png
,字面上后跟右括号

!\[(.*?)]\((https?:\/\/\S+\.\w+)\)
解释

  • \[
    匹配
    ![
  • (.*)
    捕获组1,尽可能匹配除换行符以外的任何字符
  • ]\(
    匹配
    ](
  • 捕获第2组
    • https?:\/\/
      将协议与可选的s匹配,后跟
      :/
    • \S+\.\w+
      匹配1+个非空白字符,然后匹配最后一个点和1+个单词字符
  • )\)
    关闭组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+)\)