简体   繁体   English

Jquery正则表达式模式未验证

[英]Jquery regex patterns not validating

I'm working on a web page using Java servlets and JSPs.我正在使用 Java servlet 和 JSP 处理网页。 I'm currently having trouble with my login page using HTML forms and using Jquery for some quick client-side validation using regex patterns.我目前在使用 HTML 表单和使用 Jquery 使用正则表达式模式进行一些快速客户端验证时遇到问题。 I'm running and compiling on the latest version of Intellij ultimate.我正在最新版本的 Intellij Ultimate 上运行和编译。

When writing the validation using regex patterns and testing it the first time it worked perfectly fine and displayed the message only when it broke the regex pattern.当使用正则表达式模式编写验证并第一次测试它时,它工作得非常好,并且只有在它打破正则表达式模式时才显示消息。 Now, however, after starting my laptop back up it's saying my pattern is being broken even when I'm giving a valid input.但是,现在,在启动我的笔记本电脑备份后,它说即使我提供了有效的输入,我的模式也被破坏了。 I've tested my regex online and all my patterns are doing what I want them to.我已经在线测试了我的正则表达式,我所有的模式都在做我想要的。

For some reason it allows me to enter one character into the input field and it accepted it but any more than one character and it displays my message saying the pattern has been broken.出于某种原因,它允许我在输入字段中输入一个字符,它接受它,但不能超过一个字符,它显示我的消息,说模式已被破坏。

Is this a problem with the way I'm writing it or is it a bug with Jquery?这是我编写它的方式的问题还是 Jquery 的错误?

edit: after starting my laptop up again I'm now getting no validation at all, its as if its not detecting my javascript file.编辑:再次启动我的笔记本电脑后,我现在根本没有得到任何验证,就好像它没有检测到我的 javascript 文件一样。

I have my javascript written in a different file and have linked as so in the head along with the links to use Jquery:我将我的 javascript 编写在不同的文件中,并在头部链接了使用 Jquery 的链接:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/additional-methods.min.js"></script>
<script src="form_validation.js"></script>

My form:我的表格:

<form action="CreateAccount" method="post" name = "CreateAccountForm" id = "CreateAccountForm">
    <label for="firstname">First name:</label><br>
    <input type="text" id="firstname" name="firstname"><br>

    <label for="lastname">Last name:</label><br>
    <input type="text" id="lastname" name="lastname"><br>

    <label for="username">Username:</label><br>
    <input type="text" id="username" name="username"><br>

    <label for="password">Password</label><br>
    <input type="password" id="password" name="password"><br>

    <label for="phone">Phone Number</label><br>
    <input type="text" id="phone" name="phone"><br>

    <label for="email">Email</label><br>
    <input type="email" id="email" name="email"><br><br>

    <input type="submit" value="Submit">

</form>

My Jquery:我的jQuery:

$(function () {
    $('CreateAccountForm').validate({
        rules: {
            firstname:{
                required:true,
                pattern: /^[a-zA-Z]+$/,
                maxlength: 50

            },
            lastname:{
                required:true,
                pattern: /^[a-zA-Z]+$/,
                maxlength: 50
            },
            username:{
                required:true,
                pattern: /^[^ ]+$/,
                maxlength: 50
            },
            password:{
                required:true,
                pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,15}$/
            },
            phone:{
                required:true,
                pattern: /^\d{2}-\d{4}-\d{7}$/
            },
            email:{
                required:true,
                email:true,
                maxlength: 50
            }

        },
        messages:{
            firstname:{
                required: " A first name is required",
                pattern: " First name must only contain characters a-z",
                maxlength: "Must be less than 50 characters"


            },
            lastname:{
                required: " A last name is required",
                pattern: " Last name must only contain characters a-z",
                maxlength: "Must be less than 50 characters"
            },
            username:{
                required: " A user name is required",
                pattern: " User name cannot have spaces",
                maxlength: "Must be less than 50 characters"
            },
            password:{
                required: " A password is required",
                pattern: " Password must contain: " +
                    "At least one upper case letter, " +
                    "At least one lower case letter, " +
                    "At least one number " +
                    "and be between 8-15 characters."
            },
            phone:{
                required: " A phone number is required",
                pattern: " Phone number must be in the format **-****-*******"
            },
            email:{

                required: " An email is required",
                email: " Not a valid email address format",
                maxlength: "Must be less than 50 characters"
            }

        }

    })

})

As per the documentation there is no max_length validation, the correct one to use is maxlength .根据文档,没有max_length验证,正确使用的是maxlength So something like this:所以像这样:

        firstname:{
            required:true,
            pattern: /^[a-zA-Z]+$/,
            maxlength: 50
        }, // etc.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM