2017-01-12 6 views
0

のために、私は正規表現Javascriptの正規表現カスタム検証

1を必要とする)[A-Z][a-z][0-9]は大文字&小文字、数字&特殊文字(+を除くとを含める必要があります。

2)シーケンス内に2文字以内で入力してください(例:[email protected]または[email protected]またはGoogle#12は使用できません)。

私はこれを試しましたが、2つの同一の文字をチェックする方法はわかりません。

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^%*()!&=]).*$ 
あなたが任意の文字が、 _(または -)と +に一致するように連続した文字を許可しないと(あなたはハイフンを意味している場合や [^-+]*[^_+]*で終わり .*を交換するために、追加の (?!.*(.)\1)先読みチェックを追加することができ
+0

ここまでお試しいただいた内容をお見せできますか? –

+0

最初の条件は、あなたの入力に '+'と '-'以外の文字を許可したいかのように聞こえます。 –

+0

@WiktorStribiżew+と_は許可されていません – user3747168

答えて

1

^(?!.*(.)\1)(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^*()!&=])[^_+]*$ 
    ^^^^^^^^^^             ^^^^^ 

(?!.*(.)\1) lookaheadは、改行文字以外の任意の0個の文字に一致し、これらの文字を1つずつ取り込み、その直後に同じ文字を一致させようとします(\1逆参照)。パターンが見つかった場合、全体の一致は失敗します。

[^_+]も改行と一致することがありますが、ここでは問題ではないと思います。とにかく、一致することを避けるためにそこに\n\rを追加することもできます。

regex demo

+0

'(?!。*(。)\ 1。*(。)\ 2)'を試してください。パフォーマンス面で悪化する心。 –