C# 编译常量值错误

C# 编译常量值错误,c#,C#,我在这个语句中得到了“错误的编译常量值” Regex objCheckNumber = new Regex("^(\d){4}$"); 我只想设置它来检查另一个字符串,看看输入的值是否为4位。C#使用\作为转义字符。您需要将\加倍到\ 或者,在双引号前放置@字符: new Regex(@"^(\d){4}$") C试图将\d解释为转义序列,而\d不是有效的转义序列(例如,\n和\t是)。您可以将反斜杠加倍以转义(“^(\\d){4}$”),也可以在常量字符串前面加上at符号:@“^(\d){

我在这个语句中得到了“错误的编译常量值”

Regex objCheckNumber = new Regex("^(\d){4}$");
我只想设置它来检查另一个字符串,看看输入的值是否为4位。

C#使用\作为转义字符。您需要将
\
加倍到
\

或者,在双引号前放置@字符:

new Regex(@"^(\d){4}$")

C试图将
\d
解释为转义序列,而
\d
不是有效的转义序列(例如,
\n
\t
是)。您可以将反斜杠加倍以转义(
“^(\\d){4}$”
),也可以在常量字符串前面加上at符号:
@“^(\d){4}$”

转义表示单个数字字符的d。对于{4},他在一行中查找其中四个。@pasasik-yes,\d对正则表达式引擎有特殊意义,但必须先将该字符串发送到正则表达式引擎。在不加倍或使用@的情况下,C#编译器会认为您的意思是\d是一个“特殊”字符(如\t或\n),并尝试(但失败)处理它。我正在用RegexHero进行测试:并且。。。天哪。我明白我的错误了。(很抱歉使用了downvote二进制编码程序,所以不允许我将其反转…)谢谢,完全忽略了它,可能是因为我对正则表达式考虑太多,而且它是一个字符串duh.whoops,并不是要增加psasik注释。@psasik:显然
\d
在正则表达式中具有意义,但它在普通字符串中没有意义。作为正则表达式的输入,
\d
是两个字符,而在普通字符串中,
\n
\t
被解释为一个字符。别担心,Mark今晚我们中的一些人正在关注。