我想在Inno Setup脚本中进行基本的字符串验证,以确保字符串是电子邮件地址。我只想看到有一个'@'字符后跟一个'。'字符,并且这两个字符的两边至少有一个字符。类似于这个正则表达式的东西:
[^@]+@.+\.[^\.]
对象pascal中缺少正则表达式和有限的字符串函数会让我感到悲伤。反转字符串很简单,找到第一个'。'和'@'然后进行一些比较,但没有可用的反向(字符串)功能。
我知道我可以从我编写的辅助DLL中调用导出的函数,但我希望避免这种解决方案。
还有其他建议吗?
答案 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,它带有'@'后跟'。',并且'@'和'。'两侧至少有一个字符。足够接近政府工作。