需要Flex Regex验证表达式以获取仅允许使用字母数字值且需要一个数字的密码

时间:2010-04-19 06:34:03

标签: regex flex actionscript flex4

您好我正在尝试设置一个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();
}

2 个答案:

答案 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}$"