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

Ove*_*lew 10 c# regex

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

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

谢谢.

Mar*_*ers 19

用双花括号替换单个花括号:

string regex = string.Format(@"^\d{{0,{0}}}", MaxLength);
Run Code Online (Sandbox Code Playgroud)

如果这让你的眼睛受伤,你可以使用普通的字符串连接:

string regex = @"^\d{0," + MaxLength + "}";
Run Code Online (Sandbox Code Playgroud)

  • 字符串连接使*我*眼睛受伤;) (3认同)
  • 如果您不喜欢其中任何一个,另一个选项可能是@"^\d {0,$ MaxLength}".替换("$ MaxLength",MaxLength.ToString()).我不确定自己是否喜欢它,因为它不像C#,但它确实以可读的形式保持正则表达式. (2认同)

Tho*_*que 5

您可以通过将花括号加倍来逃避花括号:

string.Format("Hello {{World}}") // returns "Hello {World}"
Run Code Online (Sandbox Code Playgroud)

在您的情况下,将是这样的:

string regexPattern = string.Format("^\d{{0,{0}}}", MaxLength);
Run Code Online (Sandbox Code Playgroud)