从正则表达式对象中提取允许字符串的最大长度

本文关键字:字符串 对象 正则表达式 提取 | 更新日期: 2023-09-27 18:03:03

是否有可能从一个正则表达式模式中提取一个允许的字符串的最大长度,一旦它被加载到一个c# Regex对象?

如果我有一个定义为@"^[A-Z0-9]{0,20}$"的Regex字符串,我可以使用字符串操作来获得20的最大允许长度。

然而,是否有一种方法可以更容易地获得,例如通过Regex对象如下:

var r = new Regex(@"^[A-Z0-9]{0,20}$");
// var max = r.MaxLength;

设置一些上下文,我有一个Asp。. Net MVC 5应用程序,其中我们使用RegexValidationAttribute来为视图模型提供输入验证。

我想做的是覆盖该属性,这样我就可以添加一个自定义元数据属性,其中包含字符串的最大允许长度,从正则表达式字符串解析。在我的字符串编辑器模板中,我将获取自定义元数据值,并向html <input>标记添加maxlength=""属性。现在我知道我可以添加一个StringLengthAttribute并这样做,但是我必须记住保持正则表达式长度和字符串长度同步。对于超过1000多个模型,我希望减少所需的重复工作。

从正则表达式对象中提取允许字符串的最大长度

是否有可能从一个正则表达式模式中提取一个允许的字符串的最大长度,一旦它被加载到一个c# Regex对象?

。Regex类没有内置字段/方法来完成这项工作。

一个可以写一个方法,试图计算一个匹配的最大理论长度,它将适用于简单的正则表达式,就像你提到的那样,但是一旦出现多个替代方案和/或长度量词(+/*),计算理论最大长度将是一场噩梦。