문제

Inno 설정 스크립트 내에서 기본 문자열 유효성 검사를 수행하고 싶습니다. 나는 단지 '@'캐릭터와 a '가있는 것을보고 싶다. 캐릭터와 이들의 양쪽에 적어도 하나의 캐릭터가 있다는 것입니다. 이 정규 표현과 유사한 것 :

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

객체 파스칼에서 이용할 수있는 정규 표현식과 제한된 문자열 함수의 부족으로 인해 슬픔이 발생합니다. 문자열을 뒤집고 첫 번째 '' '를 찾을 수있을 정도로 간단합니다. 그리고 '@'다음 비교를 수행하지만 리버스 (문자열) 기능은 없습니다.

나는 내가 쓰는 도우미 DLL에서 내보내기 기능을 호출 할 수 있다는 것을 알고 있지만이 솔루션을 피하고 싶었습니다.

다른 제안이 있습니까?

도움이 되었습니까?

해결책

훌륭한 질문! 답을 제안 할 수 있습니다 ...

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;

이 함수는 이메일 주소에 공백이 없으면 '@'다음 '@'가 있고 '@'and '.'의 양쪽에 하나 이상의 문자가 있습니다. 정부 업무를 위해 충분히 가깝습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top