我正在尝试验证字符串是否看起来像一个有效的电子邮件地址,但无论我输入什么,该函数总是返回false
function looksLikeMail(str) {
var patt = new RegExp(/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i);
return patt.test(str);
}
var c1;
var c2;
var error = false;
c1 = document.getElementById("t8").value;
c2 = document.getElementById("t9").value;
if (document.getElementById("t8").value != "" || document.getElementById("t9").value != ""){
if (document.getElementById("t8").value != ""){
var validE;
validE = looksLikeMail((String)(t8));
if (!validE){
error = true;
alert("invalid email address");
}
}
HTML
<div class="form-row">
<label class="col align-self-center"> <b>email (at least one)</b></label>
</div>
<div class="form-row">
<div class="col-md-6 offset-md-3">
<label for="inputEmail4">email-1</label>
<input type="email" class="form-control" id="t8" placeholder="email">
</div>
<div class="col-md-6 offset-md-3">
<label for="inputEmail5">email-2</label>
<input type="email" class="form-control" id="t9" placeholder="email">
</div>
</div>
你的looksLikeMail
很好('[email protected]'返回true)。
你的其他JS虽然看起来有问题。首先,你的变量t8
永远不会被定义。此外,(String)
语法无效。要使用JS进行投射,你可以改为使用String(t8)
。话虽如此,这是不必要的,因为input.value
无论如何都会返回一个字符串。
既然你似乎不熟悉JS,我也做了一些小的清理工作:
let t8 = document.getElementById("t8").value;
if (t8) {
let validE = looksLikeMail(t8);
if (!validE){
error = true;
alert("invalid email address");
}
}
试试这个代码
function looksLikeMail(str){
var regex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return regex.test(str);
}
looksLikeMail("[email protected]");// true
looksLikeMail("[email protected]");// false
looksLikeMail("[email protected]");// true
你也可以在这里测试正则表达式