密码需要 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 正则表达式将文本字段限制为仅数字(必须允许不可打印的键)

如何使用正则表达式检查用户输入是不是仅包含特殊字符?

用于文本框验证的 HTML5 正则表达式模式:仅允许字母、空格和某些字符

密码验证Objective-C的正则表达式[重复]

在 C# 中具有流畅验证的正则表达式 - 如何在密码中不允许空格和某些特殊字符?