我该如何使用 string.Format 将一个值输入到正则表达式中,当这个正则表达式已经用花括号来定义重复限制时?(我的头脑因语法冲突而混乱)
例如,普通的正则表达式是 "^\d{0,2}",我希望将属性 MaxLength 中的 '2' 插入其中。
例如,普通的正则表达式是 "^\d{0,2}",我希望将属性 MaxLength 中的 '2' 插入其中。
用双花括号替换单花括号:
string regex = string.Format(@"^\d{{0,{0}}}", MaxLength);
如果这样让你感到不舒服,你可以使用普通的字符串拼接代替:
string regex = @"^\d{0," + MaxLength + "}";
你可以通过双括号来转义花括号:
string.Format("Hello {{World}}") // returns "Hello {World}"
string regexPattern = string.Format("^\d{{0,{0}}}", MaxLength);
有关格式化字符串的详细信息,请参见MSDN
var regex = String.Format(@"^\d{{0,{0}{1}", this.MaxLength, "}")
是的,由于大括号解释的怪异性,可能需要额外的参数(在这种情况下不需要)。更多信息请参见MSDN链接。
总的来说,我必须同意Mark的观点,在这种情况下只需使用普通的字符串拼接。
string regex = $@"^\d{{0,{MaxLength}}}";
再次提醒,您需要将大括号加倍转义。