2016-11-25 19 views
0

でこのパターンを実現する方法。私は<strong><em>jqueryの</em></strong>で<strong><em>ライブ検証</em></strong>を実装していると私は私の要件に合致する<strong><em>正規表現</em></strong>の助けを取っている正規表現

要件:

パスワードが英数字でなければなりません特殊文字(すなわち、別売)(すなわち、少なくとも1つのアルファベットと1つの整数を含まなければならない)と含まれていてもよいです。

私が試したもの:以下

は、私が試したコードであり、それは働いていませんでした。

jQuery("#bgpass").validate({ 
    expression: "if (VAL.match(/^(?=[[email protected]%&#]$)(?=.*\d)(?=.*[A-Za-z]).*$/)) return true; else return false;", 
    message: "Password must be alphanumeric and can contain some special characters" 
    }); 

問題:

パスワードせずに少なくとも1つのアルファベットと一つ整数が許可されている。許可されている

例:

1234567 - Doesn't contain atleast one alphabet. 
amazing - Doesn't contain atleast one integer. 
[email protected] - Doesn't contain atleast one integer. 
123$567 - Doesn't contain atleast one alphabet. 

私が間違ってやっています!

P.S:私は正規表現に非常に新しいです。

+0

あなたは ''に '' +修飾子を追加するのを忘れ(?= [-ZA-Z0-9 @%&#] $)。私はあなたのコードを試したときにその後に正常に動作する必要があります –

答えて

1

正規表現にはいくつか問題があります。あなたは、文字列の先頭で正規表現をアンカー^

/^(?=.*\d)(?=.*[A-Za-z])/ 

Regex Demo


  • として、それを変更することができます。

  • (?=.*\d)これは前向きです。文字列に数字が含まれているかどうかを確認します。

  • (?=.*[A-Za-z])もうひとつのポジティブなルックアヘッド。これは、文字列の後にアルファベットが続くかどうかをチェックします。


^(?=[[email protected]%&#]$)(?=.*\d)(?=.*[A-Za-z]).*$/の何が問題になっているのですか?

  • ^(?=[[email protected]%&#]$)この正の先読み手段、文字列、^の試合開始。開始点の後にリスト内の何かが続いているかどうかを確認してから、文字列の末尾である$とすぐに一致するかどうかを確認します。可能性はありません。したがって、正規表現は入力文字列と一致しません。
1
^(?=[[email protected]%&#]+$)(?=.*\d)(?=.*[A-Za-z]).*$ 

        ^^ 

あなたはその作業fine.Thereがあなたのコードで何か間違っているquantifier.Elseを逃しました。

デモをご覧ください。

https://regex101.com/r/Jw8xty/1

+0

私はあなたのコードを試したときに 'SyntaxError:missing) 'という文法エラーを受けました。 – Pavan

+0

私はこの式のように指定しました。(VAL = 。* [A-Za-z])。* $ /)trueを返す;そうでなければfalseを返す; " – Pavan

+0

残念!それを直しましたが、今は***素晴らしい***はまだ許可されていますが、*** 1234567 ***。エラーはありません。 – Pavan