2011-07-04 8 views
0

レスポンスに少なくとも3文字が含まれていることを確認するための式を作成しようとしています。数字、スペース、その他の文字はすべて有効です。私が下にあるものは、特殊文字が最初に来ない場合にのみ機能します。少なくとも3つのアルファベットが必要な正規表現

(?=(.*[a-zA-Z]){3,})^[a-zA-Z0-9].+$ 
+0

は、「で始まる」という意味します。テストしている例がありますか? – Drazisil

+0

どの言語ですか? –

+0

これは有効な応答です。 "* 3人の私たち。" – JMILLS

答えて

6

あなたははるかに単純正規表現を使用することができます。これは、必要に応じて他の文字が続く文字を、一致する([a-zA-Z].*?){3}

を、3回繰り返します。

+0

私はそれを試みましたが、応答が特殊文字で始まる場合は動作しません。 – JMILLS

+0

文字列の先頭からの文字列の一致を要求するために '^'を使用しない限り動作します。 –

+0

@ジョン:はい、そうです。私はちょうどそれを試みた。 – SLaks

1
(?:[a-zA-Z][^a-zA-Z]*){3} 

マッチ(レター、それ以外のレターなし)は3回です。 (?:)は、正規表現エンジンがキャプチャする必要がないため、少し効率的です。

もちろん、正規表現なしで読みやすく分かりやすいかもしれません。ここにはC#/ linqの例があります。

if (s.Count(char.IsLetter) >= 3) 
{ 
    // is valid. 
} 
0

私のソリューション:(.*[a-zA-Z].*){3}

をそれは@SLacksとかなり類似しているが、違いは、あなたが<script>などの特殊文字で囲まれたアルファベット文字を持っている場合は、私のコードが動作するということです。

@ridgerunnerにはきちんとした解決策がありますが、文字列の最後が特殊文字であれば一致しません。あなたはこの画像の例を見ることができます:^ためだ

@ridgerunner Regex tested

関連する問題