一旦加载到C#Regex
对象中,是否可以从正则表达式模式中提取允许字符串的最大长度?
如果我将正则表达式字符串定义为@"^[A-Z0-9]{0,20}$"
,我可以使用字符串操作来获得20
的最大允许长度。
但有一种方法可以让我更轻松地获得,例如通过Regex
对象,如下所示:
var r = new Regex(@"^[A-Z0-9]{0,20}$");
// var max = r.MaxLength;
更新
要设置一些上下文,我有一个Asp.Net MVC 5应用程序,我们在其中使用RegexValidationAttribute
为视图模型提供输入验证。
我想要做的是覆盖该属性,以便我可以添加一个Custom元数据属性,该属性包含从正则表达式字符串解析的字符串的最大允许长度。在我的字符串编辑器模板中,我将获取自定义元数据值,并在html maxlength=""
标记中添加<input>
属性。
现在我知道我可以添加一个StringLengthAttribute
并按这样做,但是我必须记住保持正则表达式长度和字符串长度同步。我想要超过1000多个型号,我想要去除所需的工作量。
答案 0 :(得分:0)
一旦加载到C#
Regex
对象中,是否可以从正则表达式模式中提取允许字符串的最大长度?
没有。 Regex class没有内置字段/方法来完成工作。
一个可以编写一个尝试计算匹配的最大理论长度的方法,它可以用于简单的正则表达式,例如你提到的那个,但只要有多个替代品就会出现和/或长度量词(+
/ *
)理论最大长度的计算将是一场噩梦。