我遇到这种情况,用户可能会输入带或不带http(s)://
的网址。如果它在那里我想拥有它,否则我自己添加http://
。我有以下正则表达式模式:
正则表达式:\[url\](?:https?\:\/\/)?(.*?)\[\/url\]
替换:<a href="$1">$1</a>
使这个
[url]http://blog.sanspace.in[/url]
[url]https://blog.sanspace.in[/url]
[url]blog.sanspace.in[/url]
[url]blog.sanspace.in/scraperwiki[/url]
[url]www.sanspace.in[/url]
进入这个
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in/scraperwiki">http://blog.sanspace.in/scraperwiki</a>
<a href="http://www.sanspace.in">http://www.sanspace.in</a>
现在,我想要的是这样做。 (如果可用则使用http(s)。否则,http)
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="https://blog.sanspace.in">https://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in/scraperwiki">http://blog.sanspace.in/scraperwiki</a>
<a href="http://www.sanspace.in">http://www.sanspace.in</a>
我尝试将http(s)
添加为一个群组。
正则表达式:\[url\](https?\:\/\/)?(.*?)\[\/url\]
替换:<a href="$1$2">$1$2</a>
ut,在这种情况下,替换订单$1
和$2
是不同的。如果用户添加了http
,则会变为$1
,否则网址会变为$1
。
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="https://blog.sanspace.in">https://blog.sanspace.in</a>
<a href="blog.sanspace.in">blog.sanspace.in</a>
<a href="blog.sanspace.in/scraperwiki">blog.sanspace.in/scraperwiki</a>
<a href="www.sanspace.in">www.sanspace.in</a>
请注意最后3个网址。在这里,我必须添加http
,但前提是我知道没有用户添加http
。我不确定如何实现我的目标。
我在这里测试这个问题。 http://regexr.com?3711a
答案 0 :(得分:2)
尝试以下正则表达式:
匹配: \[url\](?:http(s)?\:\/\/)?(.*?)\[\/url\]
替换: <a href="http$1://$2">http$1://$2</a>
由于你愿意插入http://
,如果它不在原始字符串中,那么这里的想法就不会捕获它,即使它存在。而是仅捕获可选的s
,表示将{http}保密到$1
。