RegEx JavaScript issues

RegEx JavaScript issues

本文关键字:issues JavaScript RegEx      更新时间:2023-09-26

我有一个外部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");