1

我正在使用以下正则表达式来确保密码仅包含字母和数字字符。

if(! reFind("^[[:alnum:][:punct:]]", this.password)) {
                this.addError(property="Password", message="Password must contain only letters, numbers, or punctuation marks.");
            }

如果我在单词的开头添加版权©字符,reFind 会阻止它;如果我将它添加到单词的末尾,它就会通过。所以©abcd不通过,而通过abcd©

我想确保我的密码中只允许使用字母数字和标点符号。

4

3 回答 3

7

您的正则表达式只是确保第一个字符是字母数字和/或标点符号。您要确保每个字符都是字母数字和/或标点符号。您可以使用以下任何一种:

if(reFind("[^[:alnum:][:punct:]]", this.password))

if(! reFind("^[[:alnum:][:punct:]]*$", this.password))

(注意:这些也与您的不同,因为它们允许零长度密码。我认为这没关系,因为在这种情况下您会想要给出不同的错误消息。)

于 2011-10-12T21:14:40.933 回答
3

试试这个:

if(!reFind("^[[:alnum:][:punct:]]+$", this.password))
于 2011-10-12T21:10:32.700 回答
0

为什么你不能写这样的东西:

^[0-9a-zA-Z]+$
于 2011-10-12T21:18:32.993 回答