Pan Validation Regex

by sunil puvvada

HTML

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/additional-methods.js"></script>
<form id="form" method="post" action="#">
    <label for="fname">Name</label>
    <input type="text" name="fname" id="fname" />
    <label for="lname">Last Name</label>
    <input type="text" name="lname" id="lname" />
    <label for="pan">Email</label>
    <input type="text" name="pan" id="pan" />
    <button type="submit">Submit</button>
</form>

CSS

body {
    padding: 20px;
}

label {
    display: block;
}

input.error {
    border: 1px solid red;
}

label.error {
    font-weight: normal;
    color: red;
}

button {
    display: block;
    margin-top: 20px;
}

JavaScript

$(document).ready(function () {
  $.validator.addMethod("check", function(value, element) { //pan card validation
 			var a = $("#fname").val();
      var b = $("#lname").val();
      var c = "";
      a = (a.charAt(0)).toLowerCase();
      b = (b.charAt(0)).toLowerCase();
      if(a || b){
      	var c = a + a.toUpperCase() + b + b.toUpperCase();
      }
      var expression = "^[a-zA-Z]{3}[ABCFHJLPRabcfhjlpr]{1}[" + c + "]{1}[0-9]{4}[a-zA-Z]{1}$";
    var rx = new RegExp(expression);
        return this.optional(element) || rx.test(value);

    }, "Invalid Pan Number"); // End Pan card Validation    
    
    
    
    $("#form").validate({
        rules: {
            "fname": {
                required: true,
                minlength: 5
            },
            "lname": {
            		required: true,
                minlength: 5
            },
            "pan": {
                required: true,
                check:true
            }
        },
        messages: {
            "fname": {
                required: "Please, enter a name"
            },
            "lname": {
                required: "Please, enter a name"
            },
            "pan": {
                required: "Please, enter an email",
                email: "Email is invalid"
            }
        },
        submitHandler: function (form) { // for demo
            alert('valid form submitted'); // for demo
            return false; // for demo
        }
    });

});