1

AS3 / Flex4.6で正規表現を使用して、次の基準を満たすパスワードを確認しようとしています。

  1. 6〜15文字
  2. 少なくとも1つの小文字を含める必要があります
  3. 少なくとも1つの大文字が含まれている必要があります
  4. 少なくとも1つの数字が含まれている必要があります(例:0-9)

これまでのところ、これが私が使用しているものです:

<mx:RegExpValidator source="{loginPwd}" property="text" 
     expression="^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$"  
     valid="rh(event);" invalid="rh(event);"/>

6〜15文字のパスワードの長さをキャッチする以外はすべて実行します。StringValidatorこれを行うためにaを使用することもできますが、RegExpValidator両方を実行する必要があります(1つのTextInputフィールドに複数のエラーメッセージが表示される状況(たとえば、バリデーターごとに1つ)が発生しないようにするため)。

次の正規表現を試しましたが、コンパイル中は機能しません(たとえば、aaAA33パスしません)。

expression="((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15})"
expression="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}"
expression="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}^$"
expression="^.*(?=.{6,15})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$"
4

1 に答える 1

1

MacのRegexテストツールであなたの表現を試しました

 "((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15})" - works
 "^.*(?=.{6,15})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*$" - works

意図したとおりに動作します。文字列を通常のactionscript正規表現パターンと一致させようとしましたか?やった。

public function runTest():void
{
    var testArray:Array = ["aaBB99","aaaaa99","AAAAAAA","A3b","A3bdsdsdsd"];
    var reg:RegExp = new RegExp("^.*(?=.{6,15})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*$");

    for each ( var value:String in testArray )
    {
        trace(value.match(reg));
    }
}

出力は次のとおりです。

[trace] aaBB99
[trace] null
[trace] null
[trace] null
[trace] A3bdsdsdsd

ここで問題ありません

于 2012-05-13T07:57:30.303 に答える