Asp.net RegularExpressionValidator与CustomValidator中的Regex.Match

Asp.net RegularExpressionValidator与CustomValidator中的Regex.Match,asp.net,regex,validation,Asp.net,Regex,Validation,我肯定在这里遗漏了一些东西,因为我期望相同的工作方式,是不同的工作方式 假设以下RegularExpressionValidator语法 <asp:RegularExpressionValidator runat="server" ID="rxEmail" ControlToValidate="txEmail" ValidationExpression="<%$ appsettings:rxEmail %>" Text="*" />

我肯定在这里遗漏了一些东西,因为我期望相同的工作方式,是不同的工作方式

假设以下RegularExpressionValidator语法

<asp:RegularExpressionValidator runat="server" ID="rxEmail" ControlToValidate="txEmail"
                    ValidationExpression="<%$ appsettings:rxEmail %>" Text="*" />
这应该是简单的,剔除最明显的问题,而不是过于挑剔

不管是谁,只要输入bob。smith@someplace.co.uk-RegularExpressionValidator失败,但CustomValidator通过。其他场景按预期工作。。双关blah@blah.com,但会失败。可能还有其他问题,但我注意到了这一点

我猜CustomValidator中的代码与RegularExpressionValidator“幕后”生成的代码不一样,但到底有什么区别,为什么我看到了我看到的

非常感谢

bob.smith@someplace.co.uk
@
前面包含一个点。该点与
[\w-]+
不匹配

RegularExpressionValidator根据正则表达式检查整个字符串,结果正确地失败

CustomValidator(使用)检查子字符串是否匹配(并通过
smith@someplace.co.uk
,同样正确)

要确保两者的行为相同,请使用锚围绕正则表达式:

"^(?:" + myOldRegex + ")$"
@
前面包含一个点。该点与
[\w-]+
不匹配

RegularExpressionValidator根据正则表达式检查整个字符串,结果正确地失败

CustomValidator(使用)检查子字符串是否匹配(并通过
smith@someplace.co.uk
,同样正确)

要确保两者的行为相同,请使用锚围绕正则表达式:

"^(?:" + myOldRegex + ")$"

@TablooQuijico:不客气,你不是第一个被.NET团队决定将该方法命名为
IsMatch()
而不是
Search()
Find()
IsSubmatch()
或任何不表示完全匹配的方法弄糊涂的人。@TablooQuijico:不客气,对于.NET团队决定将该方法命名为
IsMatch()
,而不是
Search()
Find()
IsSubmatch()
或任何不表示完全匹配的方法,您并不是第一个感到困惑的人。
"^(?:" + myOldRegex + ")$"