我之前在Flash中写过这个功能没有问题;但是,我现在正试图用JavaScript做这件事,而且我遇到了一些困难。
使用正则表达式,我正在尝试搜索字符串,寻找类似于链接的任何内容......例如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()<>]+(?:\([\w\d]+\)|([^[: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”开头
答案 0 :(得分:2)
您的正则表达式不起作用,因为ECMA(JavaScript)不支持POSIX字符类,因此[:punct:]
会忽略.
中的.com
。