为什么我的代码不能编译?

时间:2012-01-26 12:26:07

标签: c#

我在代码隐藏文件中使用正则表达式并将字符串定义为

string ValEmail = "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";

if (Regex.IsMatch(email, "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
{  }
else
{  }

它给了我警告并且没有编译。如何定义这样的字符串组合?。

3 个答案:

答案 0 :(得分:4)

在C#中,反斜杠是一个特殊字符,如果要表示反斜杠,我们需要通知编译器。

这可以通过反斜杠来实现:

string ValEmail = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

在构造字符串时使用@前缀:

string ValEmail = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";

答案 1 :(得分:2)

反斜杠是c#字符串中的转义字符。从技术上讲,你必须使用另一个黑色长剑("\\")来逃避反斜杠,或者只是在你的字符串之前添加@

string ValEmail = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";

答案 2 :(得分:1)

使用@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"以便反斜杠将被转义