【问题标题】:Need Flex Regex Validation Expression for password that allows for only alphanumeric values and requires one number密码需要 Flex 正则表达式验证表达式,仅允许使用字母数字值并需要一个数字
【发布时间】: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();
}

【问题讨论】:

    标签: regex apache-flex actionscript flex4


    【解决方案1】:

    我不确定是什么导致了验证错误,但就您的正则表达式而言,要将字母数字字符串与至少一个数字匹配,请尝试 ^(?=.*\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 个字符之间,不一定满足您指定的要求。

    【讨论】:

    • 特殊解释,gnarf!
    【解决方案2】:

    根据ActionScript manual,反斜杠是保留字符。因此,您的表达式应该看起来像

    "^(?=.*(\\d|\\W)).{6,30}$"
    

    【讨论】:

    • 只有当你想实际匹配反斜杠字符时,你才需要双反斜杠。我认为它不适用于这种情况。
    • @macke:反斜杠在正则表达式中也有特殊含义。在这种情况下,表达式应该包含“\d”作为数字的快捷方式,但除非您对反斜杠进行转义,否则它只包含“d”或 ActionScript 中的任何“\d”。
    • 我知道,我想你可能误读了我的评论。但是,我认为您毕竟是正确的。我错过了表达式被定义为字符串,并且在字符串中反斜杠肯定需要转义才能产生预期的结果。通常,正则表达式是使用 /expression/options 语法定义的,在这种情况下,不应转义反斜杠(除非您实际上想要匹配反斜杠)。无论如何,我的立场是正确的!
    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多