我正在尝试在我的cfscript标记中使用这段代码。我已经进行了搜索和搜索,但有些东西可用于验证电子邮件地址。
如果电子邮件地址为空,则会返回错误消息,但如果我只输入字符,则会让它通过。
我对CF中的脚本非常陌生,所以任何帮助都会受到赞赏。
if (isDefined("form.email"))
{
if (form.email is "")
{
errormessageemail = "Please enter a valid Email Address!";
}
else if (not form.email is "")
{
email = form.email;
function validate_email(str,email) {
if( not len(trim(arguments.str)) or not refind("^[0-9A-Za-z.'+_-]+@([0-9A-Za-z-]+\.)+[A-Za-z]+$", trim(arguments.str)) ) {
errormessageemail = "Please enter a valid Email Address! Ex. abc@abc.com";
}
return errormessageemail;
}
}
}
答案 0 :(得分:8)
可能就是这么简单:
if (StructKeyExists(form, "email") AND NOT isValid("email", form.email)) {
errormessageemail = "Please enter a valid Email Address!";
}
您不验证是否未发布电子邮件。空白字符串不是有效的电子邮件,无需特别检查。
注意:有人可能会认为isValid / email无法100%正常运行。这是真的,但很少见。如果您也这么认真,请使用正则表达式。
答案 1 :(得分:1)
以下是我用于检查电子邮件有效性的代码:
LOCAL.Email = trim(lCase(ARGUMENTS.Email));
LOCAL.IsValid = reFindNoCase("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$", LOCAL.Email);
您应该使用structKeyExists测试您的表单,而不是像其他响应者建议的那样测试isDefined。 structKeyExists函数在特定范围内搜索变量。 isDefined搜索任何范围。
if (StructKeyExists(form, "email") AND NOT isValid("email", form.email)) {
errormessageemail = "Please enter a valid Email Address!";
}
答案 2 :(得分:0)
要检查电子邮件地址是否有效
<cfif isValid("email", #Form.email#) >
<cfoutput>Email Address is valid</cfoutput>
<cfelse>
<cfoutput>Email Address is invalid</cfoutput>
</cfelse>