我有以下代码来格式化URL:
<cfset textToFormat = ReReplaceNoCase( textToFormat, '((http(s)?://)?((www\.)?\w+\.\w{2,6}))', '<a class="actionLink" href="http://\4">\1</a>', "ALL" ) />
问题在于复杂的URL无法正常工作,例如此URL:
http://refer.ccbill.com/cgi-bin/clicks.cgi?CA=111111&PA=222222
此类网址也不起作用:
http://secure.someurl.com/track/AAAAAA4wLjAuMC4w
请有人帮助我使用可用于所有URL的RegEx。
由于
答案 0 :(得分:1)
答案 1 :(得分:1)
怎么样:
搜索模式:
(?:https?://)?(((\w+\.)+\w{2,6})(/.*)?)
替换
<a class="actionLink" href="http://\2">\1</a>
答案 2 :(得分:1)
你可以使用这个表达式:
(https?://)?(([a-z\d.-]+)(/.*)?)
并使用它:
<a class="actionLink" href="http://\2">\3</a>
一个简单的测试:
http://secure.someurl.com/track/AAAAAA4wLjAuMC4w
提供<a class="actionLink" href="http://secure.someurl.com/track/AAAAAA4wLjAuMC4w">secure.someurl.com</a>
http://refer.ccbill.com/cgi-bin/clicks.cgi?CA=111111&PA=222222
提供<a class="actionLink" href="http://refer.ccbill.com/cgi-bin/clicks.cgi?CA=111111&PA=222222">refer.ccbill.com</a>
secure.someurl.com/track/AAAAAA4wLjAuMC4w
提供<a class="actionLink" href="http://secure.someurl.com/track/AAAAAA4wLjAuMC4w">secure.someurl.com</a>
最后refer.ccbill.com
给出了<a class="actionLink" href="http://refer.ccbill.com">refer.ccbill.com</a>
。
答案 3 :(得分:1)
这是一个可能适合您的解决方案。首先,将以http://
,https://
或www.
开头的网址链接起来,如下所示:
<cfset textToFormat = ReReplaceNoCase( textToFormat,
'((https?://|www\.)[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$])',
'<a class="actionLink" href="\1">\1</a>',
"ALL" )
/>
接下来修复第一步创建的无效链接。 (以www.
开头的网址需要http://
前缀):
<cfset textToFormat = ReReplaceNoCase( textToFormat,
'href="www\.',
'href="http://www.',
"ALL" )
/>
请注意,这是未经测试的,因为我无法访问ColdFusion。此外,他们的正则表达式语法记录很少,因此该解决方案仅使用非常基本的表达式。
注意事项:链接网址很难做到很好,并且很多情况下此解决方案都会失败。请参阅:Jeff Atwood的The Problem With URLs和John Gruber的An Improved Liberal, Accurate Regex Pattern for Matching URLs以及URL Linkification,以获取有关将网址转换为链接的更多信息。
答案 4 :(得分:0)
你的正则表达只评估这个长的网址:
http://secure.someurl.com
如果你想在网址之后评估部分,比如
/track/AAAAAA4wLjAuMC4w
你必须在“正则表达式”的末尾添加类似“\。*”(带引号)之类的东西,所以它应该是
'((http(s)?://)?((www\.)?\w+\.\w{2,6})\.*)'
(我没有测试过它)
此致 斯蒂芬
答案 5 :(得分:0)
试一试
(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))
答案 6 :(得分:0)