我有以下JavaScript正则表达式:
focus: function (event, ui) {
if($("#streetid")) $("#streetid").val(ui.item.label); //this was my hidden variable
}
},
适用于以下字符串:
/\!\[(.*?)\]\((.+?) \"(.*?)\"\)/g
我遇到的问题是搜索字符串中应该有4个不同的降价标记,其中两个应该匹配,但返回的两个匹配包括降价标记。
这似乎归结为正则表达式解析器循环,抓住第一个可能的匹配起点并继续搜索匹配的剩余部分,而不考虑匹配中有一个后来可能的起点。我认为我可以使用非贪婪的![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)<br />![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "test")<br />![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)<br />![test](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "test")
修饰符来解决这个问题,但似乎并非如此。
有什么建议吗?
答案 0 :(得分:1)
其中两个Markdown链接没有说明,但正则表达式中的说明不可选。
/\!\[(.*?)\]\((.+?)(?: \"(.*?)\")?\)/g
最好排除链接地址部分中的某些字符,以避免出现意外的长匹配(如果您需要健壮性,则应使用现有的Markdown解析器)。
/\!\[(.*?)\]\(([^)]+?)(?: \"(.*?)\")?\)/g