jQuery 验证中的正则表达式 - 需要 5 个数字和 1 个字母的数字(字母不区分大小写)
Posted
技术标签:
【中文标题】jQuery 验证中的正则表达式 - 需要 5 个数字和 1 个字母的数字(字母不区分大小写)【英文标题】:Regex in jQuery validation - require a number with 5 digits and 1 letter (letter is not case sensitive) 【发布时间】:2016-09-09 22:06:21 【问题描述】:我正在尝试制作一个带有一些验证的表单。我遇到的一个问题是注册号验证。每个用户都已经属于一个关联,所以当他们联系我们时,我们必须通过检查数据库中的号码来验证是他们。我需要的帮助是注册号上的正则表达式。
目标是让他们提交 5 位数字和 1 个字母的数字。该字母不区分大小写。到目前为止,我已经尝试过:
^(\d5)([A-Z]1)$
任何像 12345A 这样的数字都是可以接受的。
此验证似乎有点过分,但我们的用户往往会经常插入错误信息,并且不会立即回复电子邮件,因此他们可以提交正确的详细信息,而无需我们追查他们的正确信息信息。
感谢任何帮助或指出错误。
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. (e.g. 12345A)";
else
$errors[] = "Name must be at least 6 characters. (e.g. 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 D.O.B.";
else
$errors[] = "D.O.B. 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 = /^(\d7)([A-Z]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('d-m-Y', $dob);
return $d && $d->format('d-m-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">D.O.B:</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>
【问题讨论】:
好吧,什么在这里不起作用? 我们需要使用 addMethod API。这将帮助你***.com/questions/13785529/… @Bkjain655 你是正确的。我添加了一个 addMethod 并给它一个正则表达式。然后在我的规则中为该字段设置正则表达式。谢谢你的帮助 【参考方案1】:在您的正则表达式中,1
是不必要的,因为 [A-Z]
已经强制使用单个字符。表达式可以改写为^(\d5)([A-Z])$
。
否则,您的表达式将匹配任何 5 位数字后跟一个字母的字符串。
【讨论】:
以上是关于jQuery 验证中的正则表达式 - 需要 5 个数字和 1 个字母的数字(字母不区分大小写)的主要内容,如果未能解决你的问题,请参考以下文章
[jquery]jquery正则表达式验证(手机号身份证号中文名称)