我有一个外部JS文件来验证表单。这一切似乎都在起作用。但是,我添加了一个正则表达式来验证密码字段。当我这样做并重新加载页面时,我之前的验证都不起作用。即使表单是空的,它也会在不应该提交的时候提交。我测试过了,当我包含变量
时var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$;
它不会玩得很好,它提交。但只要我把这个变量取出来,它就会开始工作,并再次检查字段中是否有字符。我试过把这个变量在函数中,也在函数之外,但在这两种情况下,它会阻止页面正确验证。我举几个例子:
不使用regex:
function validation() {
var x=document.forms[0]["firstname"].value;
if (x==null || x=="") {
alert("First name must be filled out");
return false;
}
这不起作用(即表单即使没有填写字段也会提交)
var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$;
function validation() {
var x=document.forms[0]["firstname"].value;
if (x==null || x=="") {
alert("First name must be filled out");
return false;
}
var x=document.forms[0]["password"].value;
if(x==null || x==""){
alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number");
return false;
} else if(!chk_name.test(x)){
alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number");
return false;
}
这个也不能用:
function validation() {
var x=document.forms[0]["firstname"].value;
if (x==null || x=="") {
alert("First name must be filled out");
return false;
}
var x=document.forms[0]["password"].value;
var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$;
if(x==null || x==""){
alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number");
return false;
} else if(!chk_name.test(x)){
alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number");
return false;
}
var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$;
var chk_name = /^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/;
文本正则表达式的语法为:
/pattern/flags
你也可以使用RegExp构造函数:
new RegExp("pattern","flags");