【发布时间】:2017-02-17 03:50:01
【问题描述】:
我有以下匹配 Url 的正则表达式。我想要做的是当一个 URL 属于某个域时使它不匹配,比如说 google.com。
我该怎么做?我一直在阅读其他问题和正则表达式参考,到目前为止我可以实现它。我的正则表达式:
^(https?:\/\/)?([\da-zA-Z\.-]+)\.([a-zA-Z\.]{2,6})([\/\w \.-]*)*\/?$
我使用它来过滤聊天中的消息,我正在使用 C# 来执行此操作。如果您想进一步挖掘,这里有一个工具:http://regexr.com/3faji
C#扩展方法:
static class String
{
public static string ClearUrl(string text)
{
Regex regx = new Regex(@"^(https?:\/\/)?([\da-zA-Z\.-]+)\.([a-zA-Z\.]{2,6})([\/\w \.-]*)*\/?$",
RegexOptions.IgnoreCase);
string output = regx.Replace(text, "*");
return output;
}
}
感谢您的帮助
【问题讨论】:
-
添加负前瞻:
^(https?:\/\/)?(?!(?:www\.)?google\.com)([\da-zA-Z.-]+)\.([a-zA-Z\.]{2,6})([\/\w .-]*)*\/?$ -
@anubhava 感谢您的评论。您粘贴的表达式不起作用,但既然我知道负前瞻,我将寻找它并尝试使其起作用。谢谢
-
提供示例数据和您的正则表达式语言/工具,以便我们进一步挖掘。
-
@anubhava 好的,我添加到问题中