我正在使用以下Regex来确保密码只有字母和数字字符。
if(! reFind("^[[:alnum:][:punct:]]", this.password)) {
this.addError(property="Password", message="Password must contain only letters, numbers, or punctuation marks.");
}
如果我在单词的开头添加版权©
字符,则reFind会阻止它;如果我把它添加到单词的末尾,它就会通过。因此©abcd
不会通过,而abcd©
会这样做。
我想确保我的密码中只允许使用字母数字和标点字符。
答案 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]+$