我有一个正则表达式将电子邮件转换为超链接,但如果电子邮件已经是超链接,它仍在转换它,这会破坏它。我有以下代码:
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 个尾随斜杠。