-3

次のコードは常に機能するとは限りません。無数の正規表現の例を見てきましたが、複数の拡張機能の使用に対処しているものはほとんどありません。

public bool FAQPNFileCheck(string name)
{
    if (name.Length > 0)
    {

        Match match = Regex.Match(name, 
                                  @"\\([A-Za-z0-9_-]+)\.(jpg|doc|pdf)$", 
                                  RegexOptions.IgnoreCase);

        // Here we check the Match instance.
        if (match.Success)
        {
            // Finally, we get the Group value and display it.
            string key = match.Groups[1].Value;
            return true;
            //Console.WriteLine(key);
        }

    }
    if (name == "")
    {
        return true;
    }

    return false;
}
4

3 に答える 3

1

次のようなものを探している場合: this_is_not_a_picture.jpg.doc、Andre が尋ねたように.、最後まで正規表現でリテラル ドット ( ) を許可していません。

これはそれを行う必要があります:

\\([A-Za-z0-9._-]+)\.(jpg|doc|pdf)$

于 2012-08-20T18:59:55.283 に答える
0

からお試しくださいRightToLeft

Regex r=new Regex(@"([A-Za-z0-9_-]+)\.(jpg|doc|pdf)$",RegexOptions.RightToLeft);
于 2012-08-20T19:06:11.890 に答える
-1

さて、結局のところ、拡張子がjpgdoc、またはpdfのファイルを許可したいのですよね?

これを試してみましょう:

Regex.Match(name, @"^(?i:[A-Z0-9\_\-]+)\.(?i:jpg|doc|pdf)$", RegexOptions.Compiled);

latkinが指摘したように、このオブジェクトを1回使用する場合は、RegexオブジェクトRegexOptions.Compiledのインスタンス化に時間がかかるため、適切な選択ではありません。ただし、一致はより高速に実行されるため、複数のファイルで使用する場合は(私が想定していたように)、それを保持してから、Regexインスタンスで保持することをお勧めします。

于 2012-08-20T19:06:05.527 に答える