ASP.net WebForms Regex验证器控件,验证表达式为“和”

时间:2013-08-01 08:00:35

标签: asp.net regex controls markup

我在弄清楚如何处理这个案子时遇到了一些麻烦。 我有一个RegExpValidator控件,它将regexp作为属性的值(这在我的标记/ html代码中)。 并且这个正则表达式包含'和'..然后当然会对.Net编译器造成很多混淆,并且对于浏览器html-engine也是如此。 那么..我的问题是..无论如何在html / markup中使用像这样的正则表达式?

以下是当前代码:

<MyCustomControl:RegularExpressionValidator Runat="server" ID="EmailRegExpValidator" ResourceID="UserAdministration.EmailRegularExpressionValidator" ControlToValidate="EmailTextBox" ValidationExpression="^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$" Display="Dynamic"/>

控件很可能不是那个自定义..而一些如何继承默认的regexp验证器。

提前致谢!

1 个答案:

答案 0 :(得分:0)

因为值侧被双引号括起来,所以不能在值内使用双引号。但是你可以在值中使用等价于双引号\x22的unicode。

因此,您的ValidationExpression属性值类似于:

ValidationExpression="^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|\x22((?=[\x01-\x7f])[^\x22\\]|\\[\x01-\x7f])*\x22\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|\x22((?=[\x01-\x7f])[^\x22\\]|\\[\x01-\x7f])*\x22)@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$"