我以前在Flash中编写过这个功能,没有问题;然而,我现在正试图用JavaScript做这件事,我遇到了一些困难。
使用Regex,我试图搜索一个字符串寻找任何类似于链接…例如http://www.google.com或http://stacoverflow.com/question/ask;然后用适当的::
将结果括起来<script type="text/javascript>
var mystring = "I'm trying to make this link http://facebook.com/lenfontes active."
/// REGEX that worked in Flash to grab ALL parts of the URL including after the .com...
var http = /b(([w-]+://?|www[.])[^s()<>]+(?:([wd]+)|([^[:punct:]s]|/)))/gi;
// preform the replace based on the Regex
mystring = mystring.replace(http, function(){
var link = arguments[0];
if (link.indexOf("http") == -1){
link = "http://" + link;}
return "<a href='"+link+"'>"+arguments[0]+"</a>";
});
$('#results).html(mystring);
</script>
我遇到的问题是:在…之后的任何东西都被忽略了。因此链接是不正确的…
即使在我发布这个问题的时候,Stack Overflow界面已经将我的文本呈现出来,并使用适当的链接标签…我需要那样做。
欢迎提出任何建议。
——更新:
对不起,让我扩展一下…我不只是寻找http://,它需要检测和包装链接开始与"https://"和/或只是开始与"www"
你的正则表达式不工作,因为ECMA (JavaScript)不支持POSIX字符类,所以[:punct:]
忽略.com
中的.
。