我有一个外部 JS 文件来验证表单。这一切似乎都在发挥作用。不过,我添加了一个正则表达式来验证密码字段。一旦我这样做并重新加载页面,我之前的验证都不起作用。即使使用空表单,它也会在不应该提交的时候提交。我测试过它,当我包含变量时
var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$;
它不会发挥很好并且它提交了。但是,一旦我取出这个变量,它就会开始工作并再次检查字段中是否有字符。我尝试将此 var 放入函数中,也放入函数外部,但在这两种情况下,它都会阻止页面正确验证。我举一些例子:
这适用于没有正则表达式:
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");
关于javascript - 正则表达式 JavaScript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520992/