as3 Flex使文本可以点击的URL

时间:2009-08-20 10:59:39

标签: flex actionscript-3 url

在AIR应用程序中,我通过JSON加载一堆任意文本,将其加载到对象中,并通过自定义渲染器显示它。我想让网址可以点击。所以我确信这可以通过一些疯狂的正则表达式(就像我发现的php here),但是,Flex是灵活的,我很惊讶没有一些内置的功能,我'我只是没有找到,或者没有找到一个有人创造的图书馆来做这件事。

(我同样感到惊讶的是,之前没有问过这个问题。我预计会被链接到这个问题)

如果不这样,有人想帮助一些疯狂的正则表达式吗? ;>

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式替换文本中的URL以获取实际链接:

str = str.replace(/((https?|ftp|telnet|file):((\/\/)|(\\\\))+[\w\d:#@%\/;$()~_?\+-=\\\.&]*)/g, "<u><a href='$1'>$1</a></u>");

然后在LabelText组件上设置htmlText并监听它的link事件:

<mx:Text htmlText="{str}" link="linkHandler(event)"/>

然后打开处理程序上的URL:

public function linkHandler(event:TextEvent):void {
    navigateToURL(new URLRequest(event.text), '_blank');
}

除了那个正则表达式之外,我还没有测试过这段代码,但它应该可行。 此外,this可能对您有所帮助。

答案 1 :(得分:2)

我想补充一点,以下RegEx可能对验证URL更有用:

/(((f|ht){1}tp:\/)[-a-zA-Z0-9@:%_\+.~#?&\/=]+)/g