javascript - 正则表达式 JavaScript 问题

标签 javascript regex

我有一个外部 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/

相关文章:

regex - 如何搜索该行上方包含字母 "foo"的行

C++ 正则表达式仅找到 1 个子匹配项

python - 在 Python 中从字符串中删除反斜杠

javascript - D3 散点图突出显示符合特定数据条件的所有点

javascript - 如何在 Opera 移动浏览器中禁用高亮选择

javascript - 如何从字符串中获取qql表达式

python - 在正则表达式中,如何匹配字符串的两种不同情况

javascript - Kendo UI 工具提示有时在应该消失时仍然可见

asp.net - 如何让 jqGrid 在后端使用 ASP.NET + JSON 工作?

Java Netbeans : Splitting a string using regular expressions