gpt4 book ai didi

c# - 客户端验证,包括 unicode 字符范围

转载 作者:行者123 更新时间:2023-11-28 01:19:38 29 4
gpt4 key购买 nike

我的页面上有一个 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" />

关于c# - 客户端验证,包括 unicode 字符范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23391573/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com