0

セキュリティのためにサーバー側の検証を使用するのが良いことは知っていますが、これは検証について理解するためだけのものです。

これまでの私の努力は次のようになりました

function validateUser()
{
    var x=document.forms["myForm"]["email"].value;
    var y=document.forms["myForm"]["password"].value;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    var uppercase = password.match(/[A-Z]/)
    var lowercase = password.match(/[a-z]/g)
    var number = password.match(/[0-9]/g)
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
    {
    alert("Not a valid e-mail address or password");
    return false;
    }else{ 
    alert("Valid Email Address and Password");
    return true;

    }
    }

基本的に、パスワードに小文字、大文字、数字が 1 つも含まれていない場合にポップアップする警告ボックスが必要です。これまでのところ、電子メールの形式が間違っていると、私のコードはエラーをスローするだけです。パスワード文字をチェックするには、if ステートメントに何を追加すればよいですか?

前もって感謝します、

ジェームズ

4

2 に答える 2

2

現在の実装にはいくつかの問題があります:

a. おそらく発生するエラーは、パスワードが定義されていないことです。

今あなたがやっている:

var y=document.forms["myForm"]["password"].value;

ただし、これを「パスワード」と呼んでいます。

var uppercase = password.match(/[A-Z]/)
var lowercase = password.match(/[a-z]/g)

変数 y を次のように変更します。

var password=document.forms["myForm"]["password"].value;

b. メールを検証するには、次のような正規表現を使用する必要があります。

var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

var isValidEmail = re.test(email);

c. パスワードのルールを確認するには、すでに用意されている正規表現に頼るだけです (そして、atpos や dotpos の使用法を取り除きます。これにより、必要以上に複雑になります)。

例:

var email='me@mailinator.com';
var password='test-P1assword';
var hasUpper = password.match(/[A-Z]/)
var hasLower = password.match(/[a-z]/g)
var hasNumber = password.match(/[0-9]/g)

var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

var isValidEmail = re.test(email);

if (isValidEmail && hasUpper && hasLower && hasNumber) {
    alert("Valid Email Address and Password");
    return true;
} else { 
    alert("Not a valid e-mail address or password");
    return false;
}

電子メールとパスワードを検証するための正規表現を含む JSFiddle の例: http://jsfiddle.net/4hH3T/2/

正規表現は次のものから取得されました: JavaScript で電子メール アドレスを検証しますか?

于 2013-05-03T01:41:46.643 に答える