我正在尝试在AS3 / Flex4.6中使用正则表达式来检查符合以下条件的密码:
到目前为止,我正在使用的是:
<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)
我在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
在这里看到没有问题