CRM Javascript 检查无效的电子邮件格式并准确输入一封电子邮件

CRM Javascript to check invalid email format and enter exactly one email

我正在为 CRM 2013 编写一个 javascript,它会在修改文本字段时触发。要求是:

  1. 检查输入的电子邮件地址是否无效。提醒弹出窗口 信息。
  2. 检查是否有多个电子邮件地址和警报弹出 上消息。此字段中只允许使用一个电子邮件地址。

这是我的代码。起初我使用分隔符来检查电子邮件地址输入列表并且它有效。我现在删除了要求 #2 的分隔符,它不再起作用了。我是否需要更改特定于一个电子邮件地址的正则表达式?

function EmailTest(EmailField) {
  var Email = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
  if (Email.test(EmailField)) {
    return true;
  } else {
    return false;
  }
}

function CheckEmailString(context) {
  try {
    //getting the input
    var EmailString = context.getEventSource().getValue();
    if (EmailString != null) {
      var Flag = true;

      if (!EmailTest(EmailString)) {
        Flag = false;
      }
      //}
      if (Flag != true) {
        alert("Please check if the email might contain invalid format. Note that only one email address is allowed for this.");
        //prevents users from saving the form if not valid
        //context.getEventArgs().preventDefault();
        //Xrm.Page.context.getEventArgs.preventDefault();
      }
    }
  } catch (err) {
    alert(err.message);
  }
}

只要文本框以有效的电子邮件地址开头(即 test@example.com),您当前使用的正则表达式就会测试是否为真 - 您需要包含字符串结尾表达式末尾的字符 $ 以检查匹配后没有其他内容:

/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+$/;

除此之外,还可以使正则表达式更简洁一些。我建议进行以下编辑以获得相同的评估结果:

/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z]{2,}$/;

另一个建议是 trim EmailField 中的文本 运行 通过表达式,作为字段开头或结尾的空格或其他空白字符会导致测试失败。