string.Format,正则表达式+花括号(C#)

时间:2009-11-28 01:47:54

标签: c# regex

如何使用string.Format在正则表达式中输入值,其中正则表达式中已经有大括号来定义重复限制? (我的思绪因碰撞而混淆了语法)

例如正常的正则表达式是“ ^ \ d {0,2} ”,我希望从属性MaxLength中插入'2'

感谢。

4 个答案:

答案 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}}}";

同样,您需要通过将花括号加倍来逃避花括号。