gpt4 book ai didi

.net - RegularExpressionValidator 是否使用 Regex 以外的其他风格?

转载 作者:行者123 更新时间:2023-12-04 16:57:20 26 4
gpt4 key购买 nike

如果输入的字符串看起来像 Vehicle Identification Number (VIN),我想进行初步检查.我知道它由 17 个字母和数字组成,但是 VIN 中不允许使用字母 I、O 和 Q,所以我使用了这个正则表达式:

^[0-9A-Z-[IOQ]]{17}$ 

现在,如果我使用 RegularExpressionValidator 检查像 1G1FP22PXS2100001 这样的字符串,它会失败,但是使用这个 OnServerValidate 事件处理程序的 CustomValidator
Regex r = new Regex("^[0-9A-Z-[IOQ]]{17}$");
args.IsValid = r.IsMatch(TextBox1.Text);

效果很好。

实验表明正则表达式验证器不支持什么 Character Class Subtraction ,但 Regex 类可以。

现在我感兴趣的是为什么这两个 .NET 类使用不同的正则表达式风格?它在那里记录了吗?

最佳答案

不是直接的回答,而只是一个明显的评论:
如果由于某种原因不支持字符类减法,您始终可以将其用作解决方法:

^[0-9A-HJ-NPR-Z]{17}$

记录我在这个问题的评论中的内容:
文章 How to: Validate Against Patterns for ASP.NET Server Controls ,确实提到 javascript 客户端正则表达式验证器不知道“字符类减法”
中所述RegularExpressionValidator Class .Net documentation :

Both server-side and client-side validation are performed unless the browser does not support client-side validation or client-side validation is explicitly disabled (by setting the EnableClientScript property to false).

The regular-expression validation implementation is slightly different on the client than on the server. On the client, JScript regular-expression syntax is used.
On the server, System.Text.RegularExpressions..::.Regex syntax is used.
JScript regular expression syntax is a subset of System.Text.RegularExpressions..::.Regex syntax.
It is therefore recommended that JScript regular-expression syntax should be used in order to yield the same results on both the client and the server.


RegularExpressionValidator woes 中提到了该副作用的另一个说明(服务器端和客户端之间的不同正则表达式风格)。博客条目。

关于.net - RegularExpressionValidator 是否使用 Regex 以外的其他风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339763/

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