【问题标题】:Actionscript 3.0 Reg Exp Find first URL, Ignore EmailActionscript 3.0 Reg Exp 查找第一个 URL,忽略电子邮件
【发布时间】:2014-04-22 00:43:06
【问题描述】:

我有一些代码,其中有一个带有 string.search() 的循环来解析 HTML 字符串。目的是找出任何有效的 URL,并用 HREF 标记适当地围绕每个 URL,同时忽略其他任何内容,例如电子邮件地址。问题是无论我如何修改正则表达式,它要么踢回@符号之后的电子邮件地址部分并突出显示它,要么突出显示或忽略所有内容。

一个示例字符串是:

"</span><span class='blue'>Weaselgrease:</span><span class='magenta'>weaselgrease@weasel.grs vs weaselgrease.weasel.grs</span><span class='blue'> [12:41:33 AM]</span>"

“weaselgrease.weasel.grs”将被识别为正确的 URL,而“weaselgrease@weasel.grs”将被忽略。

我目前的代码是/([fh]t{1,2}ps?:\/\/)?[\w-]+\.\w{2,4}/

我知道这很简单,但还不需要太复杂。

我尝试了一个条件,但一无所获。我可能只是错过了一些东西,但我的搜索甚至与http://regex101.com/ 一起玩乐高并没有让我更接近。

最终我会让它执行以下操作:
在字符串中识别有效 URL 的索引
如果是电子邮件请忽略
忽略它是否只是一个 IP 地址(没有前置 http:// 和没有尾随斜杠)

但我很乐意提供一些帮助,让我知道我需要做些什么才能让它忽略电子邮件地址。

【问题讨论】:

    标签: html regex actionscript-3 email


    【解决方案1】:

    没有正确协议(即 http、https、ftp)的 URL 无法被验证,因为这意味着几乎所有包含 .(点)的内容都是有效的 url。

    因此,如果您不使用该协议,则无法正确检查它是 url 还是电子邮件。示例:

    句子结尾。新句子 -> sentence.New 在您的情况下是有效的网址 weaselgrease@weasel.grs -> @ 之前的所有内容都被忽略,weasel.grs 是有效的 url

    【讨论】:

    • 不适当的 URL 很好。我不介意“potato.cake.skittles.sumo”是否匹配。我要做的就是拥有它,这样如果@出现在第一个“单词”之前,它就会认为该字符串不匹配。这样 '@big.chocolate.one' 和 'big@chocolate.one' 不会匹配,但 'big.chocolate.one' 会匹配。
    • 如果你仔细思考你的想法,你会发现问题——你开始回复点和空格作为你的分隔符。 big@chocolate.one 实际上是 chocolate.one 的匹配项。因此,您正在寻找由标点符号分隔的整组字符,并搜索 @ 是否在里面。我可以为你写,但我认为它是一团糟,无法正常工作。
    • 当我环顾四周时,我看到了在正则表达式末尾使用前向和后向搜索字符串的方法,以使搜索排他性地针对特定的单词或字符。我在 AS 中遇到的问题是lookbehinds 必须是零宽度,所以我不能在示例显示的地方使用 * 或 + (显然,这些示例是针对不同语言的)。我真的很想看看是否有一种方法可以完成它,而不必在常规的 actionscript 代码中发出 if-then,但我想这是我必须采取的路线。感谢您的帮助!
    猜你喜欢
    • 2018-09-12
    • 2015-01-27
    • 2016-07-01
    • 1970-01-01
    • 2016-12-09
    • 2021-06-06
    • 2013-05-01
    • 2020-03-28
    • 2017-12-02
    相关资源
    最近更新 更多