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

Cha*_*les 2 delphi inno-setup pascalscript

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

[^@]+@.+\.[^\.]
Run Code Online (Sandbox Code Playgroud)

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

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

还有其他建议吗?

Cha*_*les 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;
Run Code Online (Sandbox Code Playgroud)

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