0

重複の可能性:
英数字をチェックする方法

Hai私はalphanumbercicを使用してjqueryでパスワードを検証します。文字のみを検証します。許可された数字のみを入力したとします。親切にガイドしてください。

問題

文字を使用せずに許可

コーディング

letters = /^[0-9a-zA-Z]+$/;   
            if(!password.value.match(letters))   
            {   
                alert('Password must be alphanumeric');   
                signupForm.password.focus();   
                return false;   
            }
4

2 に答える 2

2

パスワードに大文字、小文字、数字のすべてを含める必要がある場合は、次の 3 つの正規表現を作成する必要があります。

var regexps = [/[A-Z]/,   //capital letter
              /[a-z]/,    //small letter
              /\d/ ];     //numeric digit
//This regexp is for assuring that 
//password does not contain other symbols than alphanumerics
var nonAlphanumericRegExp = /[^0-9a-zA-Z]/;

次に、次のように検証します。

if(regexps.some(function(value){  return !value.test(password.value); }) ||
       nonAlphanumericRegExp.test(password.value)){
    alert('Password must be alphanumeric');   
    signupForm.password.focus();   
    return false; 
}

ライブデモ

ドキュメント:

Array.some()

RegExp.test()

于 2012-07-10T12:50:08.657 に答える
1

おそらく、次のことをお勧めします。

/([a-z])([0-9])/

[a-z]文字のグループと数字の両方に一致するように見え[0-9]ます。

元の式の問題は、 、またはであると識別された範囲の任意の部分に一致する文字のグループを1 つだけ探していたようです。これは、数字のみ、文字のみ、または数字文字に true として一致します。a-zA-Z0-9

上記の正規表現は次のように改訂されました。

/(([a-z])+([0-9]))|(([0-9])+([a-z]))/

JS フィドルのデモ

上記の変更の理由は、RegExp が と の両方 a1に一致し、 (RegExp ) を1a使用してどちらか一方に一致するようにするためですが、どちらも見つからず、どちらかが見つかった場合でも返されます。|orfalsetrue

于 2012-07-10T12:40:49.573 に答える