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

时间:2015-12-08 22:19:23

标签: javascript regex dynamics-crm crm dynamics-crm-2013

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

  1. 检查输入的电子邮件地址是否无效。提醒弹出窗口 信息。
  2. 检查是否有多个电子邮件地址和提醒弹出窗口 消息。此字段中只允许使用一个电子邮件地址。
  3. 这是我的代码。起初我使用分隔符检查电子邮件地址输入列表,它的工作原理。我现在为需求#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);
      }
    }
    

1 个答案:

答案 0 :(得分:1)

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

$

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

/^([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,}$/;中的文本,因为字段开头或结尾处的空格或其他空格字符将导致测试失败。