我正在尝试按照此页面上的说明来验证电子邮件,但是使用jQuery进行电子邮件验证,但是我不知道为什么在表达式的开头加上^会出现错误:
function checkEmail(){
var email = this.innerHTML;
var emailPattern = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z]{2,4})+$/;
if (!emailPattern.test(email)){
alert("Invalid email address.");
}
else {
alert("Valid email address.");
}
}
如果我使用另一个(不带^和+ $),则效果很好:
var emailPattern = /[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/;
只是为了了解它,我的第一个表情出了什么问题?
这是一个小提琴,演示了我的问题:http : //jsfiddle.net/5en4cxy9/
谢谢,
您的小提琴在电子邮件地址之前有一个空格。此前导空格包含在.text()
或中.innerHTML
,因此锚定的正则表达式(/^.../
)失败。
首先修剪前导/尾随空格:
var email = this.innerHTML.trim();
var emailPattern = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z]{2,4})+$/;
if (!emailPattern.test(email)){
alert("Invalid email address.");
}
else {
alert("Valid email address.");
}
$(document).ready(function() {
$("div").blur(function() {
// alert("This input field has lost its focus.");
var email = $("div#email").text().trim();
var emailPattern = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z]{2,4})+$/;
if (!emailPattern.test(email)) {
alert("Invalid email address.");
$(this).css('color', 'red');
} else {
alert("Valid email address.");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="myTable">
<tbody>
<tr class="tabel_header">
<th width="10%" align="center"><strong> Email:</strong>
</th>
<th width="7%" align="center"><strong> Username:</strong>
</th>
</tr>
<tr data-row-no="1" height="35">
<td>
<div id="email" style="width: 100%; height: 100%;" contenteditable="true"> [email protected]</div>
</td>
<td>
<div style="width: 100%; height: 100%;" contenteditable="true">Admin</div>
</td>
</tr>
</tbody>
</table>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句