1

次の正規表現を使用して、パスワードにアルファベットと数字のみが含まれるようにしています。

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

単語の先頭に著作権文字を追加する©と、reFind によってブロックされます。単語の最後に追加すると、通過します。So©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 に答える