简体   繁体   中英

Regex in jQuery validation - require a number with 5 digits and 1 letter (letter is not case sensitive)

I'm trying to make a form with some validation. the one problem I have is the registration number validation. Each user already belongs to an association, so when they contact us we have to verify it's them by checking the number in the database. The help I need is with the regular expression on the registration no.

The goal is to have them submit a Number with 5 digits and 1 letter . The letter isn't case sensitive. So far I have tried this:

^(\d{5})([A-Z]{1})$

any number like 12345A would be acceptible.

This validation seems a bit excessive but our users tend to insert the wrong information quite often and don't get to reply to emails straight away, so this way they can submit the correct details without us having to chase them for their correct information.

Any help or pointing out errors is appreciated.

contact.js

 $(function() { // Validate the contact form $('#contactform').validate({ // Specify what the errors should look like // when they are dynamically added to the form errorElement: "label", wrapper: "td", errorPlacement: function(error, element) { error.insertBefore(element.parent().parent()); error.wrap("<tr class='error'></tr>"); $("<td></td>").insertBefore(error); }, // Add requirements to each of the fields rules: { name: { required: true, minlength: 2 }, email: { required: true, email: true }, RegNo: { required: true, minlength: 6 }, tuname: { required: true, minlength: 1 }, dob: { required: true, minlength: 10 } }, // Specify what error messages to display // when the user does something horrid messages: { name: { required: "Please enter your name.", minlength: jQuery.format("At least {0} characters required.") }, email: { required: "Please enter your email.", email: "Please enter a valid email." }, RegNo: { required: "Please enter your Reg No. (eg. 12345A)", minlength: jQuery.format("At least {0} characters required. eg. 12345A") }, tuname: { required: "Please enter your Twitter Username.", minlength: jQuery.format("At least {0} characters required.") }, dob: { required: "Please enter a DOB.", dob: jQuery.format("At least {0} characters required.") } }, // Use Ajax to send everything to processForm.php submitHandler: function(form) { $("#send").attr("value", "Sending..."); $(form).ajaxSubmit({ success: function(responseText, statusText, xhr, $form) { $(form).slideUp("fast"); $("#response").html(responseText).hide().slideDown("fast"); } }); return false; } }); }); strong text 
 <?php // Clean up the input values foreach($_POST as $key => $value) { if(ini_get('magic_quotes_gpc')) $_POST[$key] = stripslashes($_POST[$key]); $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key])); } // Assign the input values to variables for easy reference $name = $_POST["name"]; $email = $_POST["email"]; $RegNo = $_POST["RegNo"]; $tuname = $_POST["tuname"]; $dob = $_POST["DOB"]; // Test input values for errors $errors = array(); if(strlen($name) < 2) { if(!$name) { $errors[] = "You must enter a name."; } else { $errors[] = "Name must be at least 2 characters."; } } if(!$email) { $errors[] = "You must enter an email."; } else if(!validEmail($email)) { $errors[] = "You must enter a valid email."; } if(strlen($RegNo) < 6) { if(!$RegNo) { $errors[] = "You must enter a Reg Number. (eg 12345A)"; } else { $errors[] = "Name must be at least 6 characters. (eg 12345A)"; } } if(strlen($tuname) < 2) { if(!$tuname) { $errors[] = "You must enter your twitter username."; } else { $errors[] = "Username cannot be blank."; } } if(strlen($DOB) < 10) { if(!$DOB) { $errors[] = "You must enter a DOB"; } else { $errors[] = "DOB must be at least 10 characters."; } } if($errors) { // Output errors and die with a failure message $errortext = ""; foreach($errors as $error) { $errortext .= "<li>".$error."</li>"; } die("<span class='failure'>The following errors occured:<ul>". $errortext ."</ul></span>"); } // Send the email $to = "email@domain.com"; $subject = "email subject"; $message = "$name, $RegNo, $tuname, $dob"; $headers = "From: $email"; mail($to, $subject, $message, $headers); // Die with a success message die("<span class='success'>Success! Your message has been sent.</span>"); // A function that checks to see if // an email is valid function ValidatePPS($RegNo) { var formatRegex = /^(\\d{7})([AZ]{1,2})$/i; if (!formatRegex.test($RegNo)) { return "The format of the provided PPSN is invalid"; } } function validEmail($email) { $isValid = true; $atIndex = strrpos($email, "@"); if (is_bool($atIndex) && !$atIndex) { $isValid = false; } else { $domain = substr($email, $atIndex+1); $local = substr($email, 0, $atIndex); $localLen = strlen($local); $domainLen = strlen($domain); if ($localLen < 1 || $localLen > 64) { // local part length exceeded $isValid = false; } else if ($domainLen < 1 || $domainLen > 255) { // domain part length exceeded $isValid = false; } else if ($local[0] == '.' || $local[$localLen-1] == '.') { // local part starts or ends with '.' $isValid = false; } else if (preg_match('/\\\\.\\\\./', $local)) { // local part has two consecutive dots $isValid = false; } else if (!preg_match('/^[A-Za-z0-9\\\\-\\\\.]+$/', $domain)) { // character not valid in domain part $isValid = false; } else if (preg_match('/\\\\.\\\\./', $domain)) { // domain part has two consecutive dots $isValid = false; } else if(!preg_match('/^(\\\\\\\\.|[A-Za-z0-9!#%&`_=\\\\/$\\'*+?^{}|~.-])+$/', str_replace("\\\\\\\\","",$local))) { // character not valid in local part unless // local part is quoted if (!preg_match('/^"(\\\\\\\\"|[^"])+"$/', str_replace("\\\\\\\\","",$local))) { $isValid = false; } } if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) { // domain not found in DNS $isValid = false; } } return $isValid; } function validateDate($dob) { $d = DateTime::createFromFormat('dm-Y', $dob); return $d && $d->format('dm-Y') === $dob; } ?> **index.html** 
 <div id="form-group" align="center"> <form id="contactform" action="processForm.php" method="post"> <table> <br> <tr> <td> <p> <label for="name">Full Name:</label> </td> <td> <input type="text" id="name" name="name" class="form-control" /> </p> </td> </tr> <tr> <td> <p> <label for="email">Email Address:</label> </td> <td> <input type="email" id="email" name="email" class="form-control" /> </p> </td> </tr> <tr> <td> <p> <label for="RegNo">Garda Reg No:</label> </td> <td> <input type="text" id="RegNo" name="RegNo" class="form-control"></input> </p> </td> </tr> <tr> <td> <p> <label for="tuname">Twitter Username:</label> </td> <td> <input type="text" id="tuname" name="tuname" class="form-control"></input> </p> </td> </tr> <tr> <td> <p> <label for="dob">DOB:</label> </td> <td> <input type="date" id="dob" name="dob" class="form-control" placeholder="00/00/00"></input> </p> </td> </tr> <tr> <td></td> <td> <p> <input type="submit" value="Send!" id="send" type="button" class="btn btn-primary" /> </p> </td> </tr> </table> </form> <div id="response"></div> </div> 

In your regex the {1} is unnecessary as the [AZ] already enforces having a single character. The expression could be rewritten as ^(\\d{5})([AZ])$ .

Otherwise your expression will match any string with 5 digits followed by a single letter.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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