我正在为CRM 2013编写一个javascript,在修改文本字段时触发。要求是:
这是我的代码。起初我使用分隔符检查电子邮件地址输入列表,它的工作原理。我现在为需求#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);
}
}
答案 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,}$/;
中的文本,因为字段开头或结尾处的空格或其他空格字符将导致测试失败。