5

ASP.NETMVCを使用しています。

スペースや"、。;:〜^"などではなく、数字と文字のみを許可する正規表現が必要です。普通の数字と文字。

もう1つのこと:2文字を連続して繰り返すことはできません。

したがって、123123は使用できますが、1123456は使用できません。

私は次のようになりました:

Regex ER1 = new Regex(@"(.)\\1", RegexOptions.None);

Regex ER2 = new Regex(@"[A-Z0-9]", RegexOptions.IgnoreCase);

すべてを1つの表現で表現することはできませんでしたが、まだいくつかの文字が通過しています。

テスト用のコード全体は次のとおりです。

class Program
{
    static void Main(string[] args)
    {
        string input = Console.ReadLine();

        Regex ER1 = new Regex(@"(.)\\1", RegexOptions.None);

        Regex ER2 = new Regex(@"[A-Z0-9]", RegexOptions.IgnoreCase);

        if (!ER1.IsMatch(input) && ER2.IsMatch(input))
            Console.WriteLine( "Casou");
        else
            Console.WriteLine( "Não casou");

            Console.ReadLine();
    }
}

これらの表現は非常に複雑であり、これについて助けていただければ幸いです。

4

2 に答える 2

11

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

@"^(([0-9A-Z])(?!\2))*$"

説明:

^               start of string
 (              group #1
   ([0-9A-Z])   a digit or a letter (group #2)
   (?!\2)      not followed by what is captured by second group ([0-9A-Z])
 )*             any number of these
$               end of string

 

この?!グループは、ネガティブ先読みアサーションと呼ばれます。

 

LastCoderの式は同等です)

于 2013-02-07T18:23:39.997 に答える
2

このようなものが機能するはずです

@"^(?:([A-Z0-9])(?!\1))*$"
于 2013-02-07T18:25:25.580 に答える