2016-08-24 3 views
-3

正規表現に最低8文字と以下の4つのカテゴリのうちの3つの組み合わせを受け入れることを許可したかったのです。Regexは3種類の文字を受け入れますが、空白はありません

  1. 一つの大文字の英字
  2. 一つ小文字のアルファ文字
  3. つの数字
  4. つの特殊文字は良いことがある

、多くの正規表現は、私の要件のために利用可能であるが、ほとんどそれらのうちのスペースはです。

以下の正規表現は私の要件を満たしていますが、スペースも許しています。

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W])(?=.*[[email protected]#\$%&/=?_\.,:;-\\]).*$ 

と、この1はまた、スペース

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W])(?=.*[\S]) 

文字列が一致する必要がありますことができます:

  1. Testing123$
  2. Testing123
  3. Testing$

文字列が一致していなければならない:

  1. Test ing123
  2. TESTING
  3. Testing
  4. TESTING1
  5. testing1
  6. testing$

私はこれをいくつかの点で修正しようとしましたが、上記のように3つの組み合わせとともにスペースを検証する正規表現を書くことができませんでした。

正規表現源:この1つは、任意の3または4の条件が、無空間を受け付ける

Regex for checking that at least 3 of 4 different character groups exist

回答で更新。

^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]\#$%&/=?_.,:;\\-])|(?=.*[a-z])(?=.*[0-9])(?=.*[[email protected]\#$%&/=?_.,:;\\-])|(?=.*[A-Z])(?=.*[0-9])(?=.*[[email protected]\#$%&/=?_.,:;\\-]))\S{8,}$

+1

これは正規表現の書き込みサービスではありません。私たちは、あなたが試したことを理解するためにこのサイトを他の場所に残すつもりはありません。関連するすべてのコンテンツ(一致するべきではない*と*一致するはずのサンプルテキストを含む)と、あなた自身でそれを理解しようとする努力は、他の場所ではなくあなたの投稿*にある必要があります。それを実現するには[編集]してください。ありがとう。 –

+0

@KenWhite:私はそれを得て、意味があります。私は私の質問と一緒に正規表現を更新しました。 – Uba

+0

これは、私が求めていたものの3分の1です。これはスタートです。 :-)ここで、*一致してはならない*一致するはずのサンプル文字列はどこにありますか? –

答えて

1

正規表現は、いくつかの方法で不正に質問しました。 1つ目は、4種類のキャラクターすべてが必要であり、4種類のキャラクターのうち3種類ではないことです。しかし、私は他のエラーを説明することで動作します:

  1. \Wは(あなたの第四先読みに記載されたものを含む)(したくない)スペースや句読点を含む任意の非単語文字に一致します。 (?=.*[\d\W])はちょうど(?=.*\d)である必要があります。

  2. [;-\\]には、大文字と句読点の両方を含む範囲が記載されています。ハイフンをエスケープする必要があります。ハイフンを最後まで移動することが望ましいです。

  3. 先頭にある.*は、正規表現の効率を悪くするもので、末尾の1つは、空白を除外するには\S*である必要があります。しかし、あなたは長さのチェック:\S{8,}$と組み合わせることもできます。私がいることを、言ったように、

    ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]#$%&/=?_.,:;\\-])\S{8,}$ 
    

    しかし:(そこ最初の長さのチェックを置くための十分な理由でしたが、私は誰もがこれらの日のInternet Explorer 8を使用しています疑う。)

結果4つの条件すべてを満たす必要があります。 answerあなたは質問のポイントを見逃した正規表現をコピーしました。 条件のうち3つまたは4つをに適用する必要がある場合は、the accepted answerの正規表現を使用し、最後の.\Sに変更してください。

+0

クリスタルクリアな説明!ありがとう、アラン。私の期待は3つまたは4つの条件にマッチするが、スペースはない。私は、受け入れられた答えの正規表現のピリオド(。)を\ Sの最後に置き換えた。それは魅力のように働く。私は正解で質問を更新します。 – Uba

0

試してみてください。

[! @#\$%&/=?_\.,:;-\\] 

(あなたのNOTとにスペースを追加しました)

+0

申し訳ありませんが、動作しません。 – Uba

+0

アイデアは*スペースを排除することです。 –

+0

これは正しいです。それでもスペースが許されます。 – Uba

関連する問題