0

ユーザー名フィールドには、適切なユーザー名として選択できない、または特定の文字を使用できない特定のバリエーションがあります。

次に例を示します。 TIM1....TIM9 は使用できません BIN1....BIN9 は使用できません。また、文字<>:\/|?*はフィールドのどこにも表示できません。

私がこれまでに持っているコードは次のとおりです。

    private bool ValidateId(string regexValue)
    {
        Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\"/|?*]");
        return !regex.IsMatch(regexValue);
    }

ただし、許可するのに苦労しているのは、バックスラッシュ文字です。引用文字で行ったようにエスケープしようとしてもうまくいかないようです。

前もって感謝します。

4

1 に答える 1

4

ダブルエスケープを行う必要があります。これを試して:

Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\\\\\"/|?*]");

説明:

文字列にバックスラッシュを含めるには、C# 文字列のバックスラッシュをエスケープする必要があります。さらに、正規表現ではバックスラッシュもエスケープする必要があるため、文字列には 2 つのバックスラッシュが必要です。

ところで、逐語的な文字列を使用すると、もう少し読みやすくなります。

Regex regex = new Regex(@"TIM[1-9]|BIN[1-9]|[<>:\\""/|?*]");

どちらのコードも、次の式の正規表現になります。

TIM[1-9]|BIN[1-9]|[<>:\\"/|?*]
于 2011-05-10T15:39:52.240 に答える