C# 正则表达式问题:URL匹配无效,但不应

C# 正则表达式问题:URL匹配无效,但不应,c#,regex,C#,Regex,我有下面的字符串,它与下面的正则表达式字符串匹配。我希望它不匹配 测试字符串:yahoo.c!om 正则表达式模式:[\w\-\\+(\.[\w\-\\+)+([\w\-\,@?^=%&;:/~\+\\\\\\\\\\]*[\w\-\\\\\\\\\\\\\\\\\\\\\+])? 使用,我可以验证“yahoo.c!om”是否匹配。我不知道如何修改RegEx模式使其不匹配。有人有什么想法吗?这个正则表达式让我想跳楼。正则表达式中的匹配任何字符(换行符除外)。因此,中的: [\w-_]+(.

我有下面的字符串,它与下面的正则表达式字符串匹配。我希望它不匹配

测试字符串
yahoo.c!om

正则表达式模式
[\w\-\\+(\.[\w\-\\+)+([\w\-\,@?^=%&;:/~\+\\\\\\\\\\]*[\w\-\\\\\\\\\\\\\\\\\\\\\+])?


使用,我可以验证“yahoo.c!om”是否匹配。我不知道如何修改RegEx模式使其不匹配。有人有什么想法吗?这个正则表达式让我想跳楼。

正则表达式中的
匹配任何字符(换行符除外)。因此,中的

[\w-_]+(.[\w-_]+)+([\w-.,@?^=%&:/~+#]*[\w-\@?^=%&/~+#])?
        ^
        ^
        ^
匹配
from
yahoo.c!om
。将
转义为匹配文本

[\w-_]+(\.[\w-_]+)+([\w-.,@?^=%&:/~+#]*[\w-\@?^=%&/~+#])?
        ^^
        ^^
        ^^
这样,
yahoo.c!om
不会完全匹配

您可能希望使用“输入的开始”和“输入的结束”元字符“锚定”正则表达式(
^
$
):


正则表达式中的
匹配任何字符(换行符除外)。因此,中的

[\w-_]+(.[\w-_]+)+([\w-.,@?^=%&:/~+#]*[\w-\@?^=%&/~+#])?
        ^
        ^
        ^
匹配
from
yahoo.c!om
。将
转义为匹配文本

[\w-_]+(\.[\w-_]+)+([\w-.,@?^=%&:/~+#]*[\w-\@?^=%&/~+#])?
        ^^
        ^^
        ^^
这样,
yahoo.c!om
不会完全匹配

您可能希望使用“输入的开始”和“输入的结束”元字符“锚定”正则表达式(
^
$
):


你能告诉use你想要正则表达式匹配什么吗?如果我们不知道这一点,则正则表达式可能与您想要的不匹配。子句:
([\w-\u]+)+
匹配整个url,引擎将从此点开始继续报告匹配。如果你能提供更多关于你想要完成的事情的信息,这将是非常有用的。也许这个子句(@matt.seil)真的应该是
(\.[\w-\u]+)+
?或者甚至是
(\.[\w-]+)+
,因为下划线已经是
\w
的一部分。除了@Bart Kiers所说的,看起来您的正则表达式中有一些未替换的特殊字符。我在编辑窗格中查看了它,但我无法判断它们是否是由堆栈溢出自动放入的。还值得注意的是,
\w
类包括
\uu
?如果我们不知道这一点,则正则表达式可能与您想要的不匹配。子句:
([\w-\u]+)+
匹配整个url,引擎将从此点开始继续报告匹配。如果你能提供更多关于你想要完成的事情的信息,这将是非常有用的。也许这个子句(@matt.seil)真的应该是
(\.[\w-\u]+)+
?或者甚至是
(\.[\w-]+)+
,因为下划线已经是
\w
的一部分。除了@Bart Kiers所说的,看起来您的正则表达式中有一些未替换的特殊字符。我在编辑窗格中查看了它,但我无法判断它们是否是由堆栈溢出自动放入的。还值得注意的是,
\w
类包括
\u