c#之客户端验证,包括 unicode 字符范围
我的页面上有一个 asp:Textbox 以及一个 asp:RegularExpressionValidator。现在,我尝试验证任何文化的任何字符的输入,即德语名称 Günter。不幸的是,客户端验证失败了,而不是服务器端验证,因为在正则表达式模式中使用 \w 时,JavaScript 无法匹配所有区域性字母。使用显式字符是可行的(^[\wäÜÖäüö]+$),但这不是解决方案,因为我必须支持所有文化的所有字母。
说实话,我需要 JavaScript 中的 \p{L} 。有一个库(XRegExp)可以很好地支持这一点。但是,如何强制 ASP.NET 使用此库而不是 JavaScript 的默认正则表达式函数?我不想使用 asp:CustomValidator 并为我创建的每个表单做更多的工作。
请您参考如下方法:
RegularExpressionValidator 中的验证是在服务器端或客户端完成的。
当您设置 EnableClientScript="false"时,您可以使用“\p{L}”来验证“Günter”
<asp:TextBox ID="txtbox1" runat="server" />
<asp:Button ID="Button1" Text="Submit" runat="server" />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
ControlToValidate="txtbox1"
ValidationExpression="\p{L}+"
EnableClientScript="false"
ErrorMessage="Error"
runat="server" />
如果EnableClientScript="true",则您的正则表达式必须符合ECMAScript,否则将会失败。 ECMAScript 和规范正则表达式的行为有所不同,请参阅 ECMAScript Matching Behavior .
换句话说,要匹配 unicode 字母,您需要设置每个字母的精确代码或类似于 a-zA-Z 的字母之间的范围。
示例:要匹配 À-ž 中的大多数“欧洲”字母(请参阅字符映射工具),请使用
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
ControlToValidate="txtbox1"
ValidationExpression="[a-zA-Z\u00c0-\u017e]+"
EnableClientScript="true"
ErrorMessage="Error"
runat="server" />
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



