正则表达式适用于Javascript但不适用于C#

时间:2014-02-21 00:29:53

标签: c# regex

我有一个用于验证电子邮件的正则表达式,在javascript中它看起来像这样:

function CheckIfValidEmail(TheEmail) {

    return /^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/.test(TheEmail);
}

我没有创建那个正则表达式,我在网上发现了它。我想在我的C#代码中使用相同的正则表达式,使用这样的扩展方法:

public static bool IsValidEmailAddress(this string TentativeEmailAddress)
{
    string Pattern = "@/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/";
    Regex regex = new Regex(Pattern);

    return regex.IsMatch(TentativeEmailAddress.ToLower());
}

基本上,我在C#代码中复制粘贴正则表达式,希望它能正常工作,但我收到一条错误消息,上面写着parsing 'the regex' - Too many )'s.

我需要做些什么来改变这项工作?

感谢。

1 个答案:

答案 0 :(得分:6)

我认为您在C#中@之前放错了",这样您就不必加倍反斜杠了。此外,您不需要在/ ... /

中放置正则表达式
string Pattern = @"^ ... $";