如何验证允许在 @ 符号之前和之后使用特定数量的点的电子邮件


how validate an email that allows specific number of dots before and after @ symbol

var val_em=document.add_indus_detail_form.txt_email.value;
var atpos=val_em.indexOf("@");
var dotpos=val_em.lastIndexOf(".");
if(val_em!='')
{
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=val_em.length)
      {
      alert("Not a valid e-mail address");
      return false;
      }
    }       

我使用此条件来检查用户在文本框中输入的电子邮件验证,如何验证它,就像它允许 @ 前后的 3 或 4 或任何特定数量的点允许(例如 abc.abc.abc.abc@abc.abc.com)但不允许这些点在一起(例如:abc@abc...com)。也不要允许电子邮件中的空格如何让您对这种类型的验证有任何想法。

我会为此建议一个正则表达式

function validateEmail(email){
    var emailReg = new RegExp(/^(("['w-'s]+")|(['w-]+(?:'.['w-]+)*)|("['w-'s]+")(['w-]+(?:'.['w-]+)*))(@((?:['w-]+'.)*'w['w-]{0,66})'.([a-z]{2,6}(?:'.[a-z]{2})?)$)|(@'[?((25[0-5]'.|2[0-4][0-9]'.|1[0-9]{2}'.|[0-9]{1,2}'.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})'.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})']?$)/i);
    var valid = emailReg.test(email);
    if(!valid) {
        return false;
    } else {
        return true;
    }
}

在需要时调用该函数validateEmail....

JavaScript 中的验证是无用的。用户可以关闭JS,或者您可能遇到甚至无法理解JS的浏览器。这使您的页面容易受到攻击。所以永远不要使用 JS 来验证用户输入。

你想要的是正则表达式或许多 if 条件以及字符串函数。我的方法是:使用 For 循环,逐个浏览字符串,检查当前字符及其后面的字符。喜欢这个:

for($i = 0; $i < strlen($string); $i++) {
    if(substr($string, 0, 1) == '.' {
        //do something
    }
}