【问题标题】:ActionScript3: regex expression for password that checks number of charactersActionScript3:检查字符数的密码正则表达式
【发布时间】:2012-05-13 01:20:59
【问题描述】:

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

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

【问题讨论】:

  • 您是否尝试过使用锚^ $ 字符的初始正则表达式?

标签: actionscript-3 apache-flex actionscript flex4


【解决方案1】:

我在 mac 上用我的 Regex 测试工具尝试了你的表达方式

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

这里没问题

【讨论】:

  • 我不确定您所说的“正常的动作脚本正则表达式模式”是什么意思,但我测试的所有内容都是使用来自 TextInput 框的输入以及 RegExpValidator。
  • 我的意思是我在我的例子中所做的。只是检查验证器或您的模式是否有问题
  • 显示 RegExpValidator 的一些相关链接的工作方式与使用正则表达式对象的测试方法不同。 forums.adobe.com/thread/833597opencoder.co.uk/2010/03/regexpvalidator-issues 我认为这只是弄清楚哪些字符需要转义的问题,但我找不到任何关于 RexExpValidator 的文档。
  • 然后自己写。您可以为其提供静态正则表达式。无需转义字符串值等。你知道你需要什么。
  • 是的,我可以这样做,但一开始我想“为什么要重新发明轮子”可以这么说。我没想到会发现任何问题。好吧,结果我所需要的(至少对于我上面的表达)是转义大括号。现在,这个表达式有效expression="((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).\{6,15\})"
猜你喜欢
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多