首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将URL转换为Markdown语法,而不干扰已存在于Markdown语法中的URL?

如何将URL转换为Markdown语法,而不干扰已存在于Markdown语法中的URL?
EN

Stack Overflow用户
提问于 2009-03-27 14:48:33
回答 2查看 381关注 0票数 3

我正在编写的一个系统使用Markdown来修改链接,但我也希望激活普通链接,这样键入http://www.google.com就可以成为活动链接。为此,我使用正则表达式替换来查找urls,并用Markdown语法重写它们。问题是我不能让正则表达式也解析已经在Markdown语法中的链接。

我使用了以下代码:

代码语言:javascript
复制
$value = preg_replace('@((?!\()https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '[$1]($1)', $value);

这适用于普通链接,如http://www.google.com,但我需要它忽略已在Markdown格式中的链接。我认为小节(?!() )会阻止它匹配括号后面的urls,但似乎我错了。

我意识到即使这也不是一个理想的解决方案(如果它有效的话),但这超出了我的正则表达式能力。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-27 15:18:35

我想(?<!\()就是你想要的。如果匹配位置在http://www.google.com的开头,那么您需要检查的不是下一个字符,而是前一个字符。换句话说,你需要负向后看,而不是负向向前看。

票数 1
EN

Stack Overflow用户

发布于 2009-03-27 15:23:41

正则表达式在这种事情上是出了名的不好,你可能会得到各种你从未想过的聪明的html漏洞。我认为你应该修改markdown脚本来标记看到的markdown URL,这样当你用一个非常简单的搜索找到所有标记的URL时,你就可以忽略它们,而不会留下太多的麻烦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/690069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档