C# regex在online regex tester中工作,但在.NET中不工作

C# regex在online regex tester中工作,但在.NET中不工作,c#,.net,regex,C#,.net,Regex,下面的代码在网上运行得很好,但当我尝试在c#/.NET中运行它时就不行了 下面是一篇to post,它将解释正则表达式以及我尝试执行的操作需要字符串的完全匹配 在您的例子中,您只匹配从@字符开始的字符,因此您从字符串的中间位置开始。这对于RegularExpressionAttribute来说还不够好。您可以考虑在表达式的开头添加一个隐式的^(在结尾也添加一个隐式的$,因此您也可以删除它) 因此,要解决此问题,您需要确保它在开始时有匹配的内容,例如a*?: new RegularExpressi

下面的代码在网上运行得很好,但当我尝试在c#/.NET中运行它时就不行了

下面是一篇to post,它将解释正则表达式以及我尝试执行的操作

需要字符串的完全匹配

在您的例子中,您只匹配从
@
字符开始的字符,因此您从字符串的中间位置开始。这对于RegularExpressionAttribute来说还不够好。您可以考虑在表达式的开头添加一个隐式的
^
(在结尾也添加一个隐式的
$
,因此您也可以删除它)

因此,要解决此问题,您需要确保它在开始时有匹配的内容,例如a
*?

new RegularExpressionAttribute(@".*?@(?!.*?\.\.)[^@]+");
然后它就起作用了。您不需要任何其他正则表达式标志


不幸的是,
RegularExpressionAttribute
的这种行为在文档中没有提到。您可以在中进行验证,但是:

因此,从技术上讲,它不是添加的
^
$
,而是在找到匹配项后,需要使用开始索引和结束索引来匹配字符串的开始索引和结束索引(本质上是相同的)

如果你仔细想想,这种行为对于验证来说是非常有意义的。毕竟,您希望确保字符串与特定的完整指定格式匹配,而不仅仅是检查某个子字符串是否有效。

需要字符串的完整匹配

在您的例子中,您只匹配从
@
字符开始的字符,因此您从字符串的中间位置开始。这对于RegularExpressionAttribute来说还不够好。您可以考虑在表达式的开头添加一个隐式的
^
(在结尾也添加一个隐式的
$
,因此您也可以删除它)

因此,要解决此问题,您需要确保它在开始时有匹配的内容,例如a
*?

new RegularExpressionAttribute(@".*?@(?!.*?\.\.)[^@]+");
然后它就起作用了。您不需要任何其他正则表达式标志


不幸的是,
RegularExpressionAttribute
的这种行为在文档中没有提到。您可以在中进行验证,但是:

因此,从技术上讲,它不是添加的
^
$
,而是在找到匹配项后,需要使用开始索引和结束索引来匹配字符串的开始索引和结束索引(本质上是相同的)


如果你仔细想想,这种行为对于验证来说是非常有意义的。毕竟,您希望确保字符串匹配某个完整的指定格式,而不仅仅是检查某个子字符串是否有效。

您想实现什么?验证电子邮件?您试图实现什么目标?验证电子邮件?谢谢……是的,这确实有效……不知道为什么会被否决……这是一个解决方案,也可以删除尾随的
$
。请您提供一个报价,说明需要完全匹配吗?@Stribizev不幸的是,我不能,因为我没有什么可以引用的。不过,我根据参考资料添加了一些证据(以防实际证据不足)。谢谢……是的,这确实有效……我不知道为什么会被否决……这是解决方案。也可以删除尾随的
$
。请您提供一个报价,说明需要完全匹配吗?@Stribizev不幸的是,我不能,因为我根本无法引用。然而,我添加了一些基于参考源的证明(以防实际证明不够)。
// We are looking for an exact match, not just a search hit. This matches what
// the RegularExpressionValidator control does
return (m.Success && m.Index == 0 && m.Length == stringValue.Length);