2010-01-04 5 views
2

Inno Setup 스크립트에서 문자열이 전자 메일 주소라는 것을 확실히 확인하기 위해 기본 문자열 유효성 검사를 수행하고 싶습니다. 나는 단지 '@'문자 다음에 '.'문자가 오도록하고 싶다. 이 둘 중 하나에는 적어도 한 문자가 있다는 것을 의미합니다. 이 정규 표현식 비슷한 :Inno Setup 스크립트 내에서 기본 전자 메일 유효성 검사

[^@][email protected]+\.[^\.] 

하는 정규 표현식 및 오브젝트 파스칼에서 사용할 수있는 제한 문자열 함수의 부족은 나에게 슬픔의 원인이된다. 문자열을 뒤집어서 첫 번째 '를 찾습니다. 및 '@'다음에 몇 가지 비교를 수행하지만 Reverse (문자열) 기능은 없습니다.

내가 작성한 도우미 DLL에서 내 보낸 함수를 호출 할 수 있다는 것을 알고 있지만이 솔루션을 피하기 위해 노력하고있었습니다.

다른 제안 사항이 있으십니까?

답변

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를 반환 ... 내가 대답을 제안 할 수 있도록 허용, 그것은했다 '@'와 '.'의 양쪽에. 정부 업무에 충분히 근접합니다.