想象一下以下字符串
http://somedomain.com
<p>http://somedomain.com</p>
<a href="http://somedomain.com">http://somedomain.com</a>
我需要一个将其转换为。的函数或正则表达式。
<a href="http://somedomain.com">http://somedomain.com</a>
<p><a href="http://somedomain.com">http://somedomain.com</a></p>
<a href="http://somedomain.com">http://somedomain.com</a>
问题是我发现的每个解决方案都会破坏第三行上已链接的网址,或者不会将<p>
标记中的网址链接起来。
PHP解决方案会很好,但不是必需的。
答案 0 :(得分:1)
这是一个传递你的测试用例的正则表达式 - 它是.Net语法我害怕,而不是PHP
(?<=(?:[^a-z0-9]|^))(?<!href=["'])([a-z0-9]+:\/\/[^\s<>\(\)\[\]'"]+)(?=[\s<>\(\)\[\]'"])(?!</a>)
替换字符串:
<a href='$1'>$1</a>
细分和解释
正则表达式由5部分组成:
(?<=(?:[^a-z0-9]|^))
(?<!href=["'])
([a-z0-9]+:\/\/[^\s<>\(\)\[\]'"]+)
://
,后跟一个或多个“非URL”字符。您可能希望用更好的东西替换它。(?=[\s<>\(\)\[\]'"])
(?!</a>)
</a>
标记