ActionScript3:用于检查字符数的密码的正则表达式

时间:2012-05-13 01:21:00

标签: actionscript-3 flex actionscript flex4

我正在尝试在AS3 / Flex4.6中使用正则表达式来检查符合以下条件的密码:

  1. 6到15个字符
  2. 必须至少包含一个小写字母
  3. 必须至少包含一个大写字母
  4. 必须至少包含一个数字(例如0-9)
  5. 到目前为止,我正在使用的是:

    <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]).*$"
    

1 个答案:

答案 0 :(得分:1)

我在Mac上用我的Regex testtool尝试了你的表达

 "((?=.*\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

在这里看到没有问题