允许空值的Javascript电子邮件验证

允许空值的Javascript电子邮件验证,javascript,regex,validation,email,null,Javascript,Regex,Validation,Email,Null,我有这个提交功能,检查电子邮件字段是否有正确格式的地址。很好。但是,我希望该字段允许空值,因为此特定输入是可选的,不是必需的。我知道这应该很简单,我错过了显而易见的。有人给我指出正确的方向 编辑:这次提供整个表单验证。因为每次我只是更换电子邮件部分,它会破坏其他部分 function validateSMSForm() { if (SMSForm.PID_Form.value.length < 4) { alert("Please enter a valid Partner ID"); r

我有这个提交功能,检查电子邮件字段是否有正确格式的地址。很好。但是,我希望该字段允许空值,因为此特定输入是可选的,不是必需的。我知道这应该很简单,我错过了显而易见的。有人给我指出正确的方向

编辑:这次提供整个表单验证。因为每次我只是更换电子邮件部分,它会破坏其他部分

function validateSMSForm()
{
if (SMSForm.PID_Form.value.length < 4)
{
alert("Please enter a valid Partner ID");
return false;
}
if (SMSForm.area.value.length < 3)
{
alert("Please enter a valid 10-digit cell phone number");
return false;
}
if (SMSForm.prefix.value.length < 3)
{
alert("Please enter a valid 10-digit cell phone number");
return false;
}
if (SMSForm.line.value.length < 4)
{
alert("Please enter a valid 10-digit cell phone number");
return false;
}

<!-- EMAIL VALIDATION HERE
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form.emailaddress.value))  
    {  
    return (true)  
    }  
    alert("Please enter a valid email address")  
    return (false) 

-->
}
函数validatessform()
{
如果(SMSForm.PID_Form.value.length<4)
{
警报(“请输入有效的合作伙伴ID”);
返回false;
}
如果(SMSForm.area.value.length<3)
{
警报(“请输入有效的10位手机号码”);
返回false;
}
if(SMSForm.prefix.value.length<3)
{
警报(“请输入有效的10位手机号码”);
返回false;
}
如果(SMSForm.line.value.length<4)
{
警报(“请输入有效的10位手机号码”);
返回false;
}
}

首先添加空/空字符串检查:

if ((!form.emailaddress.value) || (/^\w+([.-]?\w+)@\w+([.-]?\w+)(.\w{2,3})+$/.test(form.emailaddress.value))) {
    //handle valid e-mail
} else {
    //handle invalid e-mail
}
像这样

假定

JavaScript:

function isEmail(str) {
  return !str || /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/.test(str);
}

function validateSMSForm(SMSForm) {
  if (SMSForm.PID_Form.value.length < 4) {
    alert("Please enter a valid Partner ID");
    return false;
  }

  if (SMSForm.area.value.length < 3 ||
      SMSForm.prefix.value.length < 3 || 
      SMSForm.line.value.length < 4) {
    alert("Please enter a valid 10-digit cell phone number");
    return false;
  } 

  if (!isEmail(SMSForm.emailaddress.value)) {
    alert("Please enter a valid email address")  
    return false; // 
  }

  return true; // allow submission
}
功能isEmail(str){
return!str | |/^\w+([\.-]?\w+*@\w+([\.-]?\w+)*(\.\w{2,})+$/.test(str);
}
函数ValidateSSForm(SMSForm){
如果(SMSForm.PID_Form.value.length<4){
警报(“请输入有效的合作伙伴ID”);
返回false;
}
如果(SMSForm.area.value.length<3||
SMSForm.prefix.value.length<3 | |
SMSForm.line.value.length<4){
警报(“请输入有效的10位手机号码”);
返回false;
} 
如果(!isEmail(SMSForm.emailaddress.value)){
警报(“请输入有效的电子邮件地址”)
返回false;//
}
返回true;//允许提交
}

别忘了先否定电子邮件:)一开始也犯了同样的错误。这对我不起作用。这是因为我将它包装在一组更大的函数中,用于提交时验证吗?更新以使用您的代码并允许类似something@something.infoperfection. 泰,先生。工作出色。同样,对于清理,我知道我可以合并其中的一些,但是我对此非常懒惰。上面的工作允许空值,但是忽略了二次格式验证。
function isEmail(str) {
  return !str || /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/.test(str);
}

function validateSMSForm(SMSForm) {
  if (SMSForm.PID_Form.value.length < 4) {
    alert("Please enter a valid Partner ID");
    return false;
  }

  if (SMSForm.area.value.length < 3 ||
      SMSForm.prefix.value.length < 3 || 
      SMSForm.line.value.length < 4) {
    alert("Please enter a valid 10-digit cell phone number");
    return false;
  } 

  if (!isEmail(SMSForm.emailaddress.value)) {
    alert("Please enter a valid email address")  
    return false; // 
  }

  return true; // allow submission
}