Inno Setup脚本中的基本电子邮件验证

时间:2010-01-04 18:28:14

标签: inno-setup pascalscript delphi

我想在Inno Setup脚本中进行基本的字符串验证,以确保字符串是电子邮件地址。我只想看到有一个'@'字符后跟一个'。'字符,并且这两个字符的两边至少有一个字符。类似于这个正则表达式的东西:

[^@]+@.+\.[^\.]

对象pascal中缺少正则表达式和有限的字符串函数会让我感到悲伤。反转字符串很简单,找到第一个'。'和'@'然后进行一些比较,但没有可用的反向(字符串)功能。

我知道我可以从我编写的辅助DLL中调用导出的函数,但我希望避免这种解决方案。

还有其他建议吗?

1 个答案:

答案 0 :(得分:6)

一个很好的问题!请允许我建议一个答案......

function ValidateEmail(strEmail : String) : boolean;
var
    strTemp  : String;
    nSpace   : Integer;
    nAt      : Integer;
    nDot     : Integer;
begin
    strEmail := Trim(strEmail);
    nSpace := Pos(' ', strEmail);
    nAt := Pos('@', strEmail);
    strTemp := Copy(strEmail, nAt + 1, Length(strEmail) - nAt + 1);
    nDot := Pos('.', strTemp) + nAt;
    Result := ((nSpace = 0) and (1 < nAt) and (nAt + 1 < nDot) and (nDot < Length(strEmail)));
end;

如果电子邮件地址中没有空格,则此函数返回true,它带有'@'后跟'。',并且'@'和'。'两侧至少有一个字符。足够接近政府工作。