2011-04-28 2 views
1

Access Db에 사용자가 전자 메일 주소를 입력해야하는 텍스트 상자가 있습니다. 이 작업은 Outlook 2010에서 복사하여 수행됩니다. 불행히도이 복사본은 이름과 각괄호도 가져옵니다. Fred Bloggs <[email protected]>MS Access Strip everything * 그러나 텍스트 상자의 전자 메일 주소

나는 이메일 주소를 확인하기 위해 정규식

.pattern = "[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}" 

를 사용하는 기대했다

하지만 나는 모든 다른 제거하고 유효한 이메일 주소를 입력하지 않은 경우 오류를 던지고 가겠어요 어떻게? 감사!

답변

0

Microsoft Access VBA에는 기본 제공 Regex 엔진이 없습니다. 그러나 VBScript 정규식 라이브러리에 대한 참조를 추가하고이를 사용할 수 있습니다.

여기 그렇게하는 방법을 설명합니다 관련 질문 :

+1

후기 바인딩은 참조를 만드는 것보다 우수합니다. –

+0

@David : 글쎄요, 개발에 따라 초기 바인딩은 라이브러리의 객체 모델을 마음에두고 잘 모르는 숙련되지 않은 개발자에게 많은 도움이됩니다 (IntelliSense 등). 물론 배포를 위해 런타임에 바인딩으로 전환하면 많은 문제를 방지 할 수 있습니다. – Heinzi

+0

나는 내 물건을 쉽고 안정적으로 만들어야한다. 때로는 개발자로서 더 열심히 노력해야한다는 의미입니다. –

0

이메일은 항상 최종 <>에 동봉되어있는 경우 수

Public Function fmt(email As String) As String 
pos = InStrRev(email, "<") 
If (pos > 0) Then 
    email = Mid$(email, 1 + pos, 1 + Len(email) - pos) 
    email = Left$(email, Len(email) - 1) 
End If 
fmt = email 
End Function 

또는

replace(mid(email,instrrev(email,"<")+1,len(email)),">","") 

편집;

정규식 검사의 경우 "Microsoft VBScript 정규식 라이브러리"(tools> references)에 대한 참조를 추가하고;

Public Function fmt(email As String) As String 
pos = InStrRev(email, "<") 
If (pos > 0) Then 
    email = Mid$(email, 1 + pos, 1 + Len(email) - pos) 
    email = Left$(email, Len(email) - 1) 
End If 
fmt = email 
With New RegExp 
    .Global = True 
    .IgnoreCase = True 
    .MultiLine = True 
    .Pattern = "^\[email protected]\S+\.\S+$" 
    If Not .Test(fmt) Then fmt = "" 
End With 
End Function 

유효하지 않은 이메일 주소 또는 올바른 이메일 주소를 반환합니다.

RE를 삭제했습니다. 추론 : Using a regular expression to validate an email address

+0

답장을 보내 주셔서 감사합니다. Outlook에서 직접 붙여 넣은 것은'<>'이지만, 사용자가 전혀 입력하지 않으려 고 시도하는 경우가 있습니다. 때로는 올바르게 입력되기도합니다. 나는 하위/모든 기능을 포함한다고 생각하는 기능을 찾고 있어요. 하지만 어쩌면 귀하의 솔루션을 사용할 수 있습니다 그리고 난 단지 그것을 구현하는 방법을 몰라? – BOOMERANG

+0

위의 업데이트 된 게시물 –

+1

RegEx 라이브러리에 후기 바인딩을 사용하는 것이 가장 좋습니다. 그렇습니까? –

관련 문제