如何使用string.Format在正则表达式中输入值,其中正则表达式中已经有大括号来定义重复限制? (我的思绪因碰撞而混淆了语法)
例如正常的正则表达式是“ ^ \ d {0,2} ”,我希望从属性MaxLength中插入'2'
感谢。
答案 0 :(得分:19)
用双花括号替换单花括号:
string regex = string.Format(@"^\d{{0,{0}}}", MaxLength);
如果这会让你的眼睛受伤,你可以使用普通的字符串连接代替:
string regex = @"^\d{0," + MaxLength + "}";
答案 1 :(得分:4)
你可以通过加倍来逃避花括号:
string.Format("Hello {{World}}") // returns "Hello {World}"
在你的情况下,它会是这样的:
string regexPattern = string.Format("^\d{{0,{0}}}", MaxLength);
答案 2 :(得分:2)
有关格式化字符串的详细信息,请see MSDN
var regex = String.Format(@"^\d{{0,{0}{1}", this.MaxLength, "}")
是的,额外参数 可能需要(不,这不是在这种情况下),因为大括号的解释方式有偏心。有关更多信息,请参阅MSDN链接。
总而言之,我必须同意Mark,在这种情况下,请使用正常的字符串连接。
答案 3 :(得分:1)
您现在可以使用字符串插值来做到这一点:
string regex = $@"^\d{{0,{MaxLength}}}";
同样,您需要通过将花括号加倍来逃避花括号。