这个函数在最新的 cnpack 的 CnCommon.pas 中(用 CVS 取得),源码如下:
// 判断是否有效的邮件地址
function IsValidEmail(const s: string): Boolean;
var
i: Integer;
AtCount: Integer;
begin
Result := False;
if s = '' then Exit;
AtCount := 0;
for i := 1 to Length(s) do
begin
if s[i] = '@' then
begin
Inc(AtCount);
if AtCount > 1 then
Exit;
end
else if not (s[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '_', '.']) then
Exit;
end;
Result := AtCount = 1;
end;
要求只有一个 @ 符号,并且所有字符为字母、数字、下划线和点。
您看看是否符合要求,如果觉得这种判断方法有问题,我们可以修改。