【问题标题】:as3 Flex make urls from text clickableas3 Flex 使文本中的 url 可点击
【发布时间】:2009-08-20 10:59:38
【问题描述】:

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

(我同样惊讶于这个问题以前没有在这里问过。我预计会被这个链接激怒)

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

提前致谢!

【问题讨论】:

    标签: apache-flex actionscript-3 url


    【解决方案1】:

    您可以使用以下正则表达式将文本中的 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 可能对您有所帮助。

    【讨论】:

    • 嘿,谢谢。我把这个项目放下了一分钟,所以没有及时回到这个标签来感谢你。会尝试一下,看看效果如何。感谢您为我理解疯狂的正则表达式!
    • 这实际上是我的代码中的一个问题,我以这种方式修复了它,所以没问题! :)
    【解决方案2】:

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

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

    【讨论】:

    • 太棒了。你能解释一下是什么让这个正则表达式比另一个更可取吗? (我不挑战它,我只是好奇。=)我不明白的一件事是为什么需要 {1}。 “一个且唯一一个匹配”不是默认的吗?
    猜你喜欢
    • 2010-12-27
    • 2010-12-10
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 2014-07-25
    相关资源
    最近更新 更多