繁体   English   中英

如何在jQuery中使用多个正则表达式?

[英]how to use multiple regular expressions in jquery?

我想使用正则表达式在jquery中验证输入表单。 我已经使用第一个正则表达式变量来验证名字。 但是我不能使用任何其他正则表达式来验证下一个输入变量(lname,email)。 当我使用多个正则表达式时,jQuery无法正常工作。

这是我的HTML代码

<p>First Name:</p><input type="text" id="fname" placeholder="Enter your first name">
    <span class= "error" id= "fnamelabel"></span>
    <p class="formname">Last Name: </p><input type="text" name="lname" id="lname"class="forms" placeholder="Enter your Last name">
    <span class="error" id="lnamelabel"></span>
    <p class="formname">Address:</p><input type="text" name="address" id="address"class="forms" placeholder="Enter your address name">
    <span class="error" id="addresslabel"></span>   
    <p class="formname">Email:</p><input type="text" name="email" id="email"class="forms" placeholder="Enter email address">
    <span class="error" id="emaillabel"></span> // four input form

这是我的jQuery代码

$('document').ready(function(){
    $('#sub').click(function()
                    {
                        formvalidation();
                    });
    function formvalidation()
    {
        var namef = $('#fname').val();
        var namel= $('#lname').val();
        var address = $('#address').val();
        var email= $('#email').val();

        var namexP =/^([a-zA-Z ])*/;
        //var countryexP=   /^([a-zA-Z]+([\s-][a-zA-Z]+)$/; //here i tried to declare a regular expression
        //var emailxP = /^(\w+([0-9-+.']\w+)*+\@\w+\.([\a-z]{2,3})([.]\w+))$/;

        ////////validation for first name
        if(namef=="")
        {
            $('#fnamelabel').text('Enter your first name.');
            $('#fname').css("border","1px solid red");
        }
        else if(!namexP.test(namef))
        {
            $('#fnamelabel').text("Letters only.")
            $('#fname').css("border","1px solid red");
        }
        else
        {
            $('#fnamelabel').text('');
            $('#fname').css("border","default");
        }

        ////////validation for Last name
        if(namel=="")
        {
            $('#lname').css("border","1px solid red");
            $('#lnamelabel').text('Please enter your last name name');
        }
        else if(!namexP.test(namel))
        {
            $('#lnamelabel').text("Letters only");
            $('#lname').css("border","1px solid red");
        }
        else
        {
            $('#lname').css("border","default");
            $('#lnamelabel').text('');
        }

        ////////validation for Address
        if(address == "")
        {
            $('#address').css("border","1px solid red");
            $('#addresslabel').text('Please enter your address');
        }
        else
        {
            $('#address').css("border","default");
            $('#addresslabel').text('');
        }

        //namexP= /^([a-zA-Z]+([\s-][a-zA-Z]+)$/; 
        if(email == "")
        {
            $('#email').css("border","1px solid red");
            $('#emaillabel').text('Please enter your email');
        }
        //here I also tried to direct matching method
        /*else if(email.!match(/^(\w+([0-9-+.']\w+)*+\@\w+\.([\a-z]{2,3})([.]\w+))/))
          {
          $('#email').css("border","1px solid red");
          $('#emaillabel').text('Please enter a valid email address someone@____.com'); 
          }*/
        else
        {
            $('#email').css("border","default");
            $('#emaillabel').text('');
        }
        return false;
    });

我尝试过的所有方法均无效。 所以请帮帮我。 谢谢。

正确的语法是

if (!email.match(<regexp>)) ...

if (email.!match(<regexp>)) ...

实际上,如果您只是想知道匹配是否成功,则应使用test而不是match

问题出在验证邮件的正则表达式模式中。

使用此模式来验证您的电子邮件地址。

var emailPattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

并验证您的电子邮件,例如

else if(!emailPattern.test(email){

要么

else if(!email.match(emailPattern))

演示

暂无
暂无

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

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