Javascript 为什么这个正则表达式返回false?
我有可怜的英格,很抱歉。 我会为我的处境尽力的 我试着用正则表达式生成注册表单 问题是当我使用正则表达式处理if语句时 结果起初是正确的,但之后就变成了错误。我想 下面是我的代码JavaScriptJavascript 为什么这个正则表达式返回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\
$(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()) {
欢迎来到堆栈溢出!请编辑您的问题,使其更具体、更简短,以便帮助您。如果您的表单元素未显示,则“注册”按钮将重新加载页面,并解释插入符号为什么会再次出现在第一个输入元素中。