在AIR应用程序中,我通过JSON加载一堆任意文本,将其加载到对象中,并通过自定义渲染器显示它。我想让网址可以点击。所以我确信这可以通过一些疯狂的正则表达式(就像我发现的php here),但是,Flex是灵活的,我很惊讶没有一些内置的功能,我'我只是没有找到,或者没有找到一个有人创造的图书馆来做这件事。
(我同样感到惊讶的是,之前没有问过这个问题。我预计会被链接到这个问题)
如果不这样,有人想帮助一些疯狂的正则表达式吗? ;>
提前致谢!
答案 0 :(得分:3)
您可以使用以下正则表达式替换文本中的URL以获取实际链接:
str = str.replace(/((https?|ftp|telnet|file):((\/\/)|(\\\\))+[\w\d:#@%\/;$()~_?\+-=\\\.&]*)/g, "<u><a href='$1'>$1</a></u>");
然后在Label
或Text
组件上设置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