0

您好,我正在开发一个用于测试密码字段的 javascript。但是我似乎无法让它工作。页面加载没有任何不好的事情发生,但脚本似乎无法正常工作。这是我到目前为止所写的。我希望它检查大小写字母、数字和非正则表达式。长度并不重要,只是它各有一个。这是我到目前为止所写的。

更新:找到了一种更简单的脚本编写方式。每当密码字段错误时,我都能得到它来提醒我。但是我无法让真实的陈述在单击文档按钮的位置起作用。

var str= passwordFieldForm;
    var patt=/[a-z]/g;
    var patt2 = /[A-Z]/g; 
    var patt3 = /[0-9]/g; 
    var patt4 = /[~\!@#\$%\^&*_\-\+=`\|\\(\)\{\}\[\]:;"'<>,\.\?\/]/g; 

    var result=patt.test(str);
    var result2=patt2.test(str);
    var result3=patt3.test(str);
    var result4=patt4.test(str);

    if (!result)
      alert("Needs a lowercase letter");

    if (!result2)
      alert("Needs a Uppercase Letter")

    if (!result3)
      alert("Needs a Number.")

    if (!result4)
      alert("Needs a special character")


    if (result) && (result2) && (result3) && (result4) == true
      document.getElementById("kioskform:broswerPasswordSubmit").click();
4

3 回答 3

2

这可能更接近你想要的,我没有测试过,但它应该更朝着正确的方向:

function test(password)
{
    var patt1 = /[a-z]/g;
    var patt2 = /[A-Z]/g;
    var patt3 = /[0-9]/g;
    var patt4 = /[~\!@#\$%\^&*_\-\+=`\|\\(\)\{\}\[\]:;"'<>,\.\?\/]/g;

    if (!patt1.test(password)) {
        return ("You need a lowercase letter.");
    }

    if (!patt2.test(password)) {
        return ("You need an uppercaseletter.");
    }

    if (!patt3.test(password)) {
        return ("You need a number.");
    }

    if (!patt4.test(password)) {
        return ("You need to use a one of the following characters '~!@#$%^&*_-+=`|\(){}[;.");
    }
}
于 2012-09-28T14:34:55.140 回答
1

这条线路有问题:

return ("you need to use a one of the following characters '~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/'.")

您需要转义引号和其中的斜线。

return ("you need to use a one of the following characters '~!@#$%^&*_-+=`|\\(){}[]:;\"'<>,.?/'.")

您也可以使用==而不是=进行比较,true而不是"true". 并养成始终使用 { } 作为 if 语句内容的习惯,而不是依赖制表符。

于 2012-09-28T14:22:04.930 回答
1

您需要在上一次正则表达式测试中转义其中的几个字符:

 var patt4 = /[~!@#$%\^&\*_-\+=`\|\(\)\{\}\[\]\:;"'<>,\.\?\/]/g;

如果有疑问,请使用反斜杠转义字符\。如果您逃脱了不需要转义的角色,则不会发生任何事情。

于 2012-09-28T14:25:28.147 回答