【发布时间】:2016-10-14 16:13:03
【问题描述】:
我目前正在运行这个 RegularExpressionValidator:
<asp:RegularExpressionValidator ID="rev_Nachname" runat="server" ControlToValidate="edtNachname"
Display="None" ErrorMessage="$InvalidBeginOfStringNonTechnik$Nachname$2" ValidationExpression="^[a-zA-ZÆÄÜÖáâãäåæçèéêëìíîïñòóôõöøùúûüß0-9'-]{2}.*"></asp:RegularExpressionValidator>
我现在确实需要将其更改为 Unicode - 拉丁语并为 PHP 创建了以下 RegEx:
^[\p{Latin}+\p{M}*+0-9'-]{2,}
更改正则表达式并部署相关站点后 - 如果我打开更改正则表达式的站点,应用程序将超时 - 如果我撤消更改,一切正常。
因为我没有收到任何错误,所以我有点不知所措 - 但认为 ASP 无法处理我的 RegEx。 有什么明显的原因它不起作用吗?
提前致谢!
【问题讨论】:
-
正则表达式是否仅在服务器端工作?您需要匹配哪些确切的 Unicode 范围和字符?您的
^[\p{Latin}+\p{M}*+0-9'-]{2,}正则表达式匹配两个或多个字符、拉丁文、加号、变音符号、星号、数字、撇号或连字符。 -
我需要匹配这里列出的每个字母:xoev.de/latinchars/1_1/latinchars.pdf 以及 0-9,',- \p{M}*+ 取自这里:regular-expressions.info/unicode.html 部分: Unicode 类别 Regexvalidator 似乎不喜欢 \p{Latin}
-
基本拉丁语的范围是多少?它只是所有可打印的ASCII吗?尝试
[ -~]匹配任何 ASCII 字符。同样,正则表达式是在服务器还是客户端或两者上执行?关键是正则表达式引擎不支持\p和*+。 -
正则表达式在服务器和客户端都经过验证。 Range 基本上是此处列出的可用 LatinScripts 的每个 .NET 子集:msdn.microsoft.com/en-us/library/… 但是这些范围内的任何非字母都需要限制 ASCII ASCII 之前已实现,我们现在需要匹配每个 LatinChar。