密码正则表达式允许在单词的末尾加上©符号

时间:2011-10-12 21:05:24

标签: regex coldfusion railo

我正在使用以下Regex来确保密码只有字母和数字字符。

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

如果我在单词的开头添加版权©字符,则reFind会阻止它;如果我把它添加到单词的末尾,它就会通过。因此©abcd不会通过,而abcd©会这样做。

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

3 个答案:

答案 0 :(得分:7)

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

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

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

(注意:这些也与你的不同之处在于它们允许使用零长度密码。我认为这是O.K.,因为在这种情况下你会想要给出不同的错误信息。)

答案 1 :(得分:3)

试试这个:

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

答案 2 :(得分:0)

为什么你不能这样写:

^[0-9a-zA-Z]+$