Электронная почта матча VBA RegEx - PullRequest
1 голос
/ 17 апреля 2020

Простой вопрос здесь, просто ищу функцию, которая проверит, является ли ввод электронной почтой.

У меня есть форма в Microsoft Access, где пользователь вводит адрес электронной почты (необязательно), поэтому, если они вводят значение для адреса электронной почты, я хочу проверить, чтобы убедиться, что он в формате электронной почты, например alphanumeri * Символ 1009 *, за которым следует "@", за которым следует еще один буквенный символ c. Я думаю, что есть также некоторые дополнительные требования к адресу электронной почты, такие как отсутствие специальных символов, кроме подчеркивания и окончания в «.com» или чего-то другого. Функция должна выглядеть примерно так:

Function isEmail(eml As String) As Boolean
    Dim emailRegEx as New RegEx
    emailRegEx.Pattern = (\w[@]+\w[.]\w\w\w)

    If (emailRegEx.Test(eml) = True) Then
        isEmail = True
    Else
        isEmail = False
    End If
End Function

Я удивлен, что у MS Access нет опции для email маски ввода, поэтому я думаю, что это должно быть сделано в коде до они добавляют эту функцию. Надеюсь, это не дубликат, я видел этот вопрос на других языках программирования и на таких вопросах, как проверка домена электронной почты в VBA, но не видел этого точного вопроса в VBA.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020
Sub test()
    Const csMail As String = "abcd@defg.com"
    Debug.Print isEmail(csMail)
End Sub


Function isEmail(eml As String) As Boolean
' needs reference to Microsoft VBScript Regular Expressions
    Dim emailRegEx As New RegExp
    emailRegEx.IgnoreCase = True
    emailRegEx.Pattern = "[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}"
    isEmail = emailRegEx.test(eml)
End Function

Будут разные RegEx в зависимости от того, как далеко вы зайдете; см. регулярные-выражения.info / электронная почта. html для дальнейшей справки.

0 голосов
/ 17 апреля 2020

Я нашел решение, которое, кажется, работает, я проверил его с некоторыми действительными и недействительными адресами электронной почты.

Function isEmail(sEmail As String) As Boolean
    Dim regexEmail As New RegExp
    regexEmail.Pattern = " (^\w+)([.]*)(\w*)[@](\w+)[.](\w+$)"
    regexEmail.IgnoreCase = True
    isEmail = regexEmail.Test(sEmail)
End Function

'объяснение: ^ \ w + начинается с одной или нескольких букв, цифр или подчеркиваний .

'[.] * Может включать или не включать точку (например, firstName. LastName@live.com)

' \ w * может включать или не включать одну или несколько букв, цифр, или подчеркивание.

'[@] ровно одна @ символ

' \ w + одна или несколько букв, цифр или подчеркиваний.

'[.] ровно одна точка

'(\ w + $), заканчивающийся одной или несколькими буквами, цифрами или подчеркиванием.

Если кто-то увидит что-то, что я пропустил, я приветствую любые предложения по улучшению этого решения. Примечание для тех, кто пытается внедрить это решение: вам потребуется go для Инструменты> Ссылки и добавить ссылку на регулярные выражения Microsoft VBScript, чтобы использовать RegEx в своем приложении. Благодарим Камарапу sh и officeTricks.com , так как я адаптировал код с их страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...