2012-05-13 50 views
0

我試圖在AS3使用一個正則表達式表達的數/ Flex4.6檢查滿足以下標準的密碼:的ActionScript3:用於密碼正則表達式表達,檢查字符

  1. 6至15個字符
  2. 必須包含至少一個小寫字母
  3. 必須包含至少一個大寫字母
  4. 必須包含至少一個數字(例如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來做到這一點,但我寧願RegExpValidator都這樣做(這樣我就沒有在一個TextInput字段中顯示多個錯誤消息的情況,例如每個驗證器一個)。

我試過以下的正則表達式,但它們編譯時,它們不起作用(例如,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]).*$" 
+0

您是否嘗試過您最初的正則表達式錨'^ $'字符? –

回答

1

我想你表達我的正則表達式testtool在mac上

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

作品像預期。 您是否嘗試將字符串與正常的動作正則表達式模式匹配?我做到了。

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 

看看有沒有問題這裏

+0

我不確定「normal actionscript正則表達式模式」是什麼意思,但我測試的所有東西都是使用來自TextInput框和RegExpValidator的輸入。 – ggkmath

+0

我的意思是我在我的例子中所做的。只是爲了檢查驗證器或模式中是否存在問題 – Larusso

+0

顯示RegExpValidator的某些相關鏈接與使用正則表達式對象的測試方法不同。 http://forums.adobe.com/thread/833597和http://www.opencoder.co.uk/2010/03/regexpvalidator-issues/我認爲這只是一個確定哪些字符需要轉義的問題,但我找不到有關RexExpValidator的任何文檔。 – ggkmath