c#允许正则表达式中的斜杠(和其他类似字符)

时间:2012-03-19 20:45:57

标签: c# asp.net .net regex

我正在尝试根据输入的字符验证字符串。我希望能够设置除字符和数字之外允许的字符。以下是我的扩展方法:

public static bool isAlphaNumeric(this string inputString, string allowedChars)
{
    StringBuilder str = new StringBuilder(allowedChars);
    str.Replace(" ", "\\s");
    str.Replace("\n","\\\\");
    str.Replace("/n", "////");
    allowedChars = str.ToString();

    Regex rg = new Regex(@"^[a-zA-Z0-9" + allowedChars + "]*$");
    return rg.IsMatch(inputString);
}

我使用它的方式是:

s string = " te\m@as 1963' yili.ışçöÖÇÜ/nda olbnrdu" // just a test string with no meaning
if (s.isAlphaNumeric("ışŞö\Ö@üÜçÇ ğ'Ğ/.")) {...}

当然它会出错:

parsing "^[a-zA-Z0-9ışŞö\Ö@üÜçÇ\sğ'Ğ/.]*$" - Unrecognized escape sequence

stringbuilder替换函数是错误的,我知道。我希望能够接受allowedChars参数中给出的所有字符。这还可以包括斜杠(任何其他类似于我不知道的斜杠的字符?)鉴于此,如何让我的替换功能工作?而且我正在做的方式是正确的吗?我对正则表达式非常陌生,并且不知道如何使用它们......

2 个答案:

答案 0 :(得分:7)

您需要在字符串上使用Regex.Escape

allowedChars = Regex.Escape(str.ToString());

应该这样做。

答案 1 :(得分:2)

您正在寻找Regex.Escape