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

C# 从正则表达式对象提取允许字符串的最大长度,c#,regex,C#,Regex,在将正则表达式加载到C#regex对象后,是否可以从正则表达式模式中提取允许字符串的最大长度 如果将正则表达式字符串定义为@“^[a-Z0-9]{0,20}$”,则可以使用字符串操纵来获得允许的最大长度20 但是,有没有一种方法可以更容易地获得它,例如通过Regex对象,如下所示: var r = new Regex(@"^[A-Z0-9]{0,20}$"); // var max = r.MaxLength; 更新 为了设置一些上下文,我有一个Asp.NETMVC5应用程序,其中我们使用Re

在将正则表达式加载到C#
regex
对象后,是否可以从正则表达式模式中提取允许字符串的最大长度

如果将正则表达式字符串定义为
@“^[a-Z0-9]{0,20}$”
,则可以使用字符串操纵来获得允许的最大长度
20

但是,有没有一种方法可以更容易地获得它,例如通过
Regex
对象,如下所示:

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

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

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

在将正则表达式加载到C#
regex
对象后,是否可以从正则表达式模式中提取允许字符串的最大长度

否。没有内置的字段/方法来执行此工作


我们可以编写一种方法,尝试计算匹配的最大理论长度,它适用于您提到的简单正则表达式,但只要出现多个替代项和/或长度量词(
+
/
*
)理论最大长度的计算将是一场噩梦。

使用另一个正则表达式来解析前一个正则表达式。你能提供一个例子吗?我不知道有什么属性,可以从中读取字符串的长度,而且我猜它也没有实现。您可以做的是,将它与您的字符串进行匹配,并给出匹配字符的计数,前提是您确定存在给定的限制,并且存在匹配项。问题是,在正则表达式模式中,可以有任意多个字符限制,因此实际上没有一个限制——revo的意思是用另一个正则表达式解析示例正则表达式中的20个字符:从大括号中取出数字-\{\d+?\,(\d+?)\},或者分别是\{\d+?\,(\d+?)\}美元作为最后一个可能的限制,你想实现什么?你能添加一个用例吗?