正则表达式用于将电子邮件转换为超链接,但如果已经是超链接,则不将其转换为超链接,并且指向缺少尾部斜杠的超链接的 URL



我有一个正则表达式将电子邮件转换为超链接,但如果电子邮件已经是超链接,它仍在转换它,这会破坏它。我有以下代码:

string regex = @"([&;a-zA-Z_0-9.-]+@[a-zA-Z_0-9.-]+.w+)";

我需要添加一些东西以在最后检查。我想我需要一个消极的展望——?!</a>——还是什么?

此外,我还有另一个将 URL 转换为超链接的正则表达式,但如果 URL 以斜杠结尾,则不会将其包含在超链接中。这是我的代码:

var reg = new Regex(@"(?<!<s*(?:a|img)b[^<]*)(b((http|https)://|www.)[^ <]+b)");

如何包含尾部斜杠?

假设以下

网址

test@test.net

是:

<a href="mailto:test@test.net">test@test.net</a>

编辑:如果您不想转换现有的href并处理诸如 test@test.net.au 之类的地址,那么您可以执行以下操作:

([&;a-zA-Z_0-9.-]+@[a-zA-Z_0-9.-]+.w+)(?!([w.]+)*(?:</a>|">))

基本上,它说如果电子邮件地址后面跟着.和单词字符的某种组合,然后是</a>">,则不匹配电子邮件地址。我没有对 html 进行编码以提高可读性。

你的消极展望走在正确的轨道上,但你需要w*否则它会匹配 test@test.ne 因为接下来是t而不是</a>

更新

刚刚看到第二部分。对于尾部斜杠,您能否附加/?

(?<!<s*(?:a|img)b[^<]*)(b((http|https)://|www.)[^ <]+b/?)

这意味着 0 或 1 个尾随斜杠。

最新更新