我有一个RegEx将电子邮件转换为超链接,但如果电子邮件已经是超链接,它仍然会转换它,这会打破它。我有以下代码:
string regex = @"([&;a-zA-Z_0-9.-]+\@[a-zA-Z_0-9.-]+\.\w+)";
我需要添加一些内容以便在最后检查。我想我需要一个负面的预测 - ?!</a>
- 还是什么?
此外,我还有另一个将URL转换为超链接的正则表达式,但如果URL以斜杠结尾,则不包括超链接中的URL。这是我的代码:
var reg = new Regex(@"(?<!<\s*(?:a|img)\b[^<]*)(\b((http|https)://|www\.)[^ <]+\b)");
如何添加尾部斜杠?
答案 0 :(得分:2)
假设网址为:
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>
< / p>
<强>更新强>
刚看到第二部分。对于尾部斜杠,您可以只追加/?
:
(?<!<\s*(?:a|img)\b[^<]*)(\b((http|https)://|www\.)[^ <]+\b/?)
这意味着0或1尾随斜杠。