3

8文字で構成される任意の単語に一致する正規表現を作成したいのですが、これらの文字は文字セット[A-Za-z0-9]に属している必要があります。

ただし、3つの文字セット(大文字、小文字、数字)のそれぞれから少なくとも1文字で構成する必要があります。

これは私が使用している正規表現です:

^[a-zA-Z0-9]{8}$

ただし、これは次のような例と一致します。

09823983
language
mainMenu

しかし、私は次のような単語を一致させたい:

uXk3mHy9

正規表現を使用してこれを行うにはどうすればよいですか?

4

2 に答える 2

5

look-ahead正規表現の前に3つ使用できます。

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8}$
于 2012-11-16T05:27:24.697 に答える
1

すべてを1つの正規表現で実行しないでください。正規表現は、すべてのソリューションが必要な魔法のツールボックスではありません。

すべてを1つの正規表現に詰め込むのではなく、3つの異なる条件を確認します。Perlでは、これは次のようになります。

$ok = ( $s =~ /^[a-zA-Z0-9]{8}$/ && $s =~ /[a-z]/ && $s =~ /[A-Z]/ && $s =~ /[0-9]/ );

あなたの意図が何であるかははるかに明確です。

于 2012-12-04T21:52:31.907 に答える