3

私は次のようなC#正規表現を持っています

[\"\'\\/]+

文字列に特定の特殊文字が見つかった場合に評価してエラーを返すために使用したい。

私のテスト文字列は次のとおりです。

\test

文字列を検証するために、このメソッドを呼び出しています。

public static bool validateComments(string input, out string errorString)
{
    errorString = null;
    bool result;

    result = !Regex.IsMatch(input, "[\"\'\\/]+");  // result is true if no match
                                                   // return an error if match

    if (result == false)
        errorString = "Comments cannot contain quotes (double or single) or slashes.";

    return result;
}

ただし、バックスラッシュを一致させることはできません。regexpal や VS2012 拡張機能などのいくつかのツールを試しましたが、どちらもこの正規表現にうまく一致しているように見えますが、C# コード自体はそうではありません。C# は Javascript Ajax 呼び出しから文字列をエスケープしていることに気付きました。この文字列を一致させる別の方法はありますか?

/test または 'test または "test に一致しますが、\test には一致しません

4

4 に答える 4

3

次のように文字列を逐語的にすることで、これを解決できます@

result = !Regex.IsMatch(input, @"[\""\'\\/]+");
于 2013-09-11T13:11:01.000 に答える
0

些細なケースでは、次の単純な式を使用して、テスト式に regexhero.net を使用できます。

\\

検証します

\test

RegExHero によって生成されたコード:

string strRegex = @"\\";

RegexOptions myRegexOptions = RegexOptions.IgnoreCase;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"\test";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    // Add your code here
  }
}
于 2013-09-11T13:11:03.777 に答える