<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<script type="text/javascript">
function create_urls(input)
{
var input = input.replace(/^((ht|f)tp(s?))\://([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(/\S*)?$/gim,'<a href="$&" class="my_link" target="_blank">$&</a>');
document.getElementById('disply_id').innerHTML = input;
}
</script>
</HEAD>
<BODY>
<input type="text" id="replace_id"/>
<input type="button" value="replace" onclick="create_urls(document.getElementById('replace_id').value);"/>
<div id="disply_id">
</div>
</BODY>
</HTML>
我想找到与&#34; http://google.com"匹配的网址。或https://www.google.com并将其放在锚标记
中由于
答案 0 :(得分:2)
从SELFHTML.org(德国网页)获取的example几乎完全相同。
var input= "foo bar http://google.com";
input = input.replace(/((ht|f)tps?:\/\/\S*)/g, '<a href="$1">$1<\/a>');
这将匹配以http,https或ftp协议开头的每个URL。
要处理仅.com
和.tv
结尾的限制,您可以尝试这样做:
input.replace(/((\S*\.(com|tv))(\/\S*)?)/gi, '<a href="$1">$2<\/a>')
结合两种模式你可能会寻找这样的东西:(这里有一些限制)
input.replace(/((((ht|f)tps?:\/\/)?[^\/\s]+\.(com|tv))(\/\S*)?)/gi, '<a href="$1">$2<\/a>')
说明:
((ht|f)tps?:\/\/)? - optional http:// or https:// or ftp:// or ftps:// [^\/\s]+ - URL domain containing no slash and no whitspace \.(com|tv) - ending .com or .tv (not optional! you may want to add more) (\/\S*)? - optional rest of URL after domain
P.S。在你的正则表达式中,你没有逃脱//
\/\/
的更新强>
我试试这种方法:
var regex = /((ht|f)tps?:\/\/\S*)/g;
var result = regex.exec(input);
if ( result != null && result.length > 1 ) {
input = '<a href="' + result[1] + '">' + result[1] + '<\/a>';
} else {
input = input.replace(/((\S*\.(com|tv))(\/\S*)?)/gi, '<a href="$1">$1<\/a>');
}