Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个正则表达式返回false?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么这个正则表达式返回false?

Javascript 为什么这个正则表达式返回false?,javascript,jquery,Javascript,Jquery,我有可怜的英格,很抱歉。 我会为我的处境尽力的 我试着用正则表达式生成注册表单 问题是当我使用正则表达式处理if语句时 结果起初是正确的,但之后就变成了错误。我想 下面是我的代码JavaScript $(document).ready(function () { var idCheck = /^[a-z]+[a-z0-9]{5,19}$/g; // more than 6 words var pwCheck = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\

我有可怜的英格,很抱歉。 我会为我的处境尽力的

我试着用正则表达式生成注册表单

问题是当我使用正则表达式处理if语句时

结果起初是正确的,但之后就变成了错误。我想

下面是我的代码JavaScript

$(document).ready(function () {


    var idCheck = /^[a-z]+[a-z0-9]{5,19}$/g; // more than 6 words
    var pwCheck = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/; // more than 8 words including at least one number
    var emCheck = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/; // valid email check

    var signupConfirm = $('#signupConfirm'),
        id = $('#id'),
        pw = $('#pw'),
        repw = $('#repw'),
        email =$('#email');

    signupConfirm.click(function () {
        if(id.val() === '' || pw.val() === '' || email.val() === ''){
            $('#signupForm').html('Fill the all blanks');
            return false;
        } else {
            if (idCheck.test(id.val()) !== true) {
                $('#signupForm').html('ID has to be more than 6 words');
                id.focus();
                return false;
            } else if (pwCheck.test(pw.val()) !== true) {
                $('#signupForm').html('The passwords has to be more than 8 words including at least one number');
                pw.focus();
                return false;
            } else if (repw !== pw) {
                $('#signupForm').html('The passwords are not the same.');
                pw.empty();
                repw.empty();
                pw.focus();
                return false;
            }
            if (emCheck.test(email.val()) !== true) {
                $('#signupForm').html('Fill a valid email');
                email.focus();
                return false;
            }
        }
    })

});
在id输入中用6个字填充id后,由于满足条件,焦点已移到密码输入。 但在我再次单击“注册”按钮后,即使ID输入用6个字填充,焦点也会移回ID输入

我已经多次更改正则表达式。但还是这样

有什么建议我可以解决这个问题吗? 我希望有人能帮助我

多谢各位。祝你度过愉快的一天

不要在正则表达式上使用全局标志。您的代码应该是:

var idCheck = /^[a-z]+[a-z0-9]{5,19}$/;
当您匹配/g标志时,您的正则表达式将保存调用之间的状态,因此所有后续匹配也将包括以前的输入。

使用

var idCheck = /^[a-z]+[a-z0-9]{5,19}$/
移除g标志 并修改该行

else if (repw.val() !== pw.val()) {

欢迎来到堆栈溢出!请编辑您的问题,使其更具体、更简短,以便帮助您。如果您的表单元素未显示,则“注册”按钮将重新加载页面,并解释插入符号为什么会再次出现在第一个输入元素中。