密码需要 Flex 正则表达式验证表达式,仅允许使用字母数字值并需要一个数字
Posted
技术标签:
【中文标题】密码需要 Flex 正则表达式验证表达式,仅允许使用字母数字值并需要一个数字【英文标题】:Need Flex Regex Validation Expression for password that allows for only alphanumeric values and requires one number 【发布时间】:2011-02-09 13:38:18 【问题描述】:您好,我正在尝试设置一个 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();
【问题讨论】:
【参考方案1】:我不确定是什么导致了验证错误,但就您的正则表达式而言,要将字母数字字符串与至少一个数字匹配,请尝试 ^(?=.*\d)\w6,30$
^ # Match begining of string
(?=.*\d) # Lookahead, assert there is any number of characters followed by a digit
\w6,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 个字符之间,不一定满足您指定的要求。
【讨论】:
特殊解释,gnarf!【参考方案2】:根据ActionScript manual,反斜杠是保留字符。因此,您的表达式应该看起来像
"^(?=.*(\\d|\\W)).6,30$"
【讨论】:
只有当你想实际匹配反斜杠字符时,你才需要双反斜杠。我认为它不适用于这种情况。 @macke:反斜杠在正则表达式中也有特殊含义。在这种情况下,表达式应该包含“\d”作为数字的快捷方式,但除非您对反斜杠进行转义,否则它只包含“d”或 ActionScript 中的任何“\d”。 我知道,我想你可能误读了我的评论。但是,我认为您毕竟是正确的。我错过了表达式被定义为字符串,并且在字符串中反斜杠肯定需要转义才能产生预期的结果。通常,正则表达式是使用 /expression/options 语法定义的,在这种情况下,不应转义反斜杠(除非您实际上想要匹配反斜杠)。无论如何,我的立场是正确的!以上是关于密码需要 Flex 正则表达式验证表达式,仅允许使用字母数字值并需要一个数字的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 正则表达式将文本字段限制为仅数字(必须允许不可打印的键)