Regex 用于指向超链接的URL的正则表达式

Regex 用于指向超链接的URL的正则表达式,regex,actionscript,flex4,Regex,Actionscript,Flex4,目前,我使用以下正则表达式将URL替换为HTML超链接: msg = msg.replace(/(\b((https?|ftp|file):\/\/|www.)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi, "<a href='out.php?u=$1'>$1</a>"); 进入 但现在我有一个问题。当我已经有一个超链接时,我不想将该超链接中的URL替换为新的超链接 因此: 不得成为:

目前,我使用以下正则表达式将URL替换为HTML超链接:

msg = msg.replace(/(\b((https?|ftp|file):\/\/|www.)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi, "<a href='out.php?u=$1'>$1</a>");
进入



但现在我有一个问题。当我已经有一个超链接时,我不想将该超链接中的URL替换为新的超链接

因此:


不得成为:

<a href='<a href='out.php?u=http://www.stackoverflow.com'>http://www.stackoverflow.com</a>'>Stackoverflow</a>
堆栈溢出

有人知道我该怎么防止吗

您可以使用一个消极的前瞻断言来实现这一点,该断言编写为(?!表达式)。所以

?!(\");

我已经修复了它,在字符串前后添加了一个空格,并用以下前后的空格替换所有URL:

msg = " " + msg + " ";
msg = msg.replace(/(\s)(((https?|ftp|file):\/\/|www.)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])(\s)/gi, " <a target='_blank' href=\"" + websiteUrl + "/out.php?u=$2\"><font color='" + hyperlinkColor + "'>$2</font></a> ");
msg = StringUtil.trim(msg);
msg=”“+msg+”;
msg=msg.replace(/(\s)((https?| ftp | file):\/\/\www.[-A-Z0-9+&\/%?=~!:,.;]*[-A-Z0-9+&\/%=~ |])(\s)/gi,”;
msg=StringUtil.trim(msg);

这并不能取代所有的超链接,因为超链接在URL前后都没有空格。

我想这已经得到了回答:
<a href='http://www.stackoverflow.com'>Stackoverflow</a>
<a href='<a href='out.php?u=http://www.stackoverflow.com'>http://www.stackoverflow.com</a>'>Stackoverflow</a>
?!(\<a)/(\b((https?|ftp|file):\/\/|www.)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi, "<a href='out.php?u=$1'>$1</a>");
msg = " " + msg + " ";
msg = msg.replace(/(\s)(((https?|ftp|file):\/\/|www.)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])(\s)/gi, " <a target='_blank' href=\"" + websiteUrl + "/out.php?u=$2\"><font color='" + hyperlinkColor + "'>$2</font></a> ");
msg = StringUtil.trim(msg);