您好我正在尝试设置一个RegexpValidator,它只接受6到30个字符长的字母数字字符串,并且需要一个数字。我是正则表达式的新手,我尝试过的所有内容似乎都会返回一个无效的ValidationRsultEvent。这是一大堆代码:
<mx:RegExpValidator id="regexValidator" source="{passwordInput}" property="text"
triggerEvent="" valid="onPasswordValidate(event)" invalid="onPasswordValidate(event)" />
private function validateRegister():void
{
regexValidator.expression = "^(?=.*(\d|\W)).{6,30}$";
regexValidator.validate();
}
答案 0 :(得分:3)
我不确定导致验证错误的原因,但就您的正则表达式而言,要将字母数字字符串与至少一个数字匹配,请尝试^(?=.*\d)\w{6,30}$
^ # Match begining of string
(?=.*\d) # Lookahead, assert there is any number of characters followed by a digit
\w{6,30} # \w matches letters, digits and the underscore character, 6-30 of them
$ # Match End of string
如果您只想匹配字母和数字,而不是\w
,则可以使用[0-9a-zA-Z]
。
您当前的正则表达式^(?=.*(\d|\W)).{6,30}$
匹配任何包含至少一个[a-zA-Z_]
以外的字符的字符串(\d|\W
匹配数字或“非字”字符),即长度在6到30个字符之间,不一定符合您指定的要求。
答案 1 :(得分:1)
根据ActionScript manual,反斜杠是一个保留字符。因此,您的表达应该看起来像
"^(?=.*(\\d|\\W)).{6,30}$"