[英]Using a regex for email address verification
我需要有关正则表达式的帮助,但我不知道该如何处理。
在用户输入正确的电子邮件之前,如何防止用户提交?
电子邮件格式必须类似于此emailaddress@bri.golia.com
应该接受的电子邮件地址只能是域@ bri.golia.com,其他什么都不应该让用户提交表单,我该怎么办?
<form method="post" action="site.com/mail.php" name="SampleForm" enctype="multipart/form-data">
<div class="info">
<h2 class="forms_heading" name="Contact">Contact Information</h2>
<br />
<div class="required">
<label for="name">Name:</label>
<input type="text" for="name" id="name" name="RequesterName" required="required" />
</div>
<div class="required">
<label for="email">E-mail:</label>
<input type="text" for="email" id="email" name="RequesterEmail" required="required" />
</div>
<div class="required">
<label for="phone">Phone:</label>
<input type="text" for="phone" id="phone" name="RequesterPhone" required="required" />
</div>
<br />
<br />
</div><!-- end info -->
<br />
<input type="submit" value="Submit" class="submit_button" />
假设您正在使用jQuery Validation Plugin ,那么您应该能够添加自定义regex
验证方法。
我没有测试过,但是应该很接近:
$.validator.addMethod(
"regex",
function(value, element, regexp) {
var check = false;
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
},
"Please check your input."
);
使用上述方法,现在您可以传递验证正则表达式:
$("#input1").rules("add", { regex: "^[a-zA-Z]+@yourdomain\.com$" });
显然,您可以根据需要调整正则表达式,直到满足您的要求。 出于示例目的,我包括了一个用于验证域名的基本正则表达式。
正则表达式字符串
^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$
我要么使用RegEx类型的ASP验证器,要么对按钮的click方法进行Regex比较。
可以在这里找到其他一些RegEx字符串:
这是“文本”字段和RegEx验证器的一些示例ASP:
<asp:TextBox ID="txtEmail" runat="server" />
<asp:RegularExpressionValidator ID="valEmail" ControlToValidate="txtEmail"
runat="server"
ValidationExpression="^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"
ErrorMessage="You need a valid e-mail address" />
另外,这里是关于ASP验证程序的更多内容的不错的搜索
使用正则表达式添加pattern
属性:
<input type="text" for="email" id="email" name="RequesterEmail" required="required" pattern="\b[A-Za-z0-9._%+-]+@bri\.golia\.com\b" />
另请参阅我的jsfiddle 。
===更新===
要更改错误文本,请覆盖invalid
方法:
document.getElementById('email').oninvalid = function(e) {
e.target.setCustomValidity('');
if (!e.target.validity.valid) {
e.target.setCustomValidity("My custom text.");
}
};
另请参阅我更新的jsfiddle 。
我不认为您需要为此使用正则表达式,带有indexOf的简单子字符串是anuf,可以提取电子邮件的第一部分和最后一部分,然后检查其@ bri.golia.com
var str_email = "testblah@bri.golia.com";
var str_at_domain = str_email.substring(str_email.indexOf('@'));
var userEmail = str_email.substring(0, str_email.indexOf('@'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.