Регулярные выражения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Регулярные выражения

Сообщение MOV » 23.08.2006 (Ср) 11:48

Как проверить корректность ввода адреса электронной почты?
Хотелось бы с помощью регулярных выражений, с коими в VB6 ни разу не работал.
Недавно видел здесь пример в каком-то почтовом клиенет, даже выложил его в какой-то топик, но он был убит.
Поиск по регулярным выражениям дал немного :(

аааа стоп. нашел.
http://visualprogs.narod.ru/all/4.html
можно убить топик

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 23.08.2006 (Ср) 11:56

Код: Выделить всё
Function IsEmail(TestStr as String) as Boolean
Dim s() as String
    s = Split(TestStr, "@")
    IsEmail = TestStr Like "*@*.*" and UBound(s) = 1
End Function
Лучший способ понять что-то самому — объяснить это другому.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 23.08.2006 (Ср) 12:52

Блин, а как подключить VBScript Regular Expressions
у меня в referenc ее нет
где взять? )

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.08.2006 (Ср) 12:58

Для приведенного примера регулярные выражения не нужны.
Lasciate ogni speranza, voi ch'entrate.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 23.08.2006 (Ср) 13:24

хорошо
берем адрес: aaaaa@eeee\.....;;+/.ru
он его съедает
все-таки с регулярными выражениями лучше
как подключить? :(

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.08.2006 (Ср) 13:32

Подключи библиотеку Scripting Runtime, в ней регэкспы есть.
Но ты вначале убедись, сможешь ли ты написать такое регулярное выражение, которое безошибочно будет определять валидность адреса.
Lasciate ogni speranza, voi ch'entrate.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 23.08.2006 (Ср) 13:53

блин, ну нет И ее в референсах ( ни под каким видом
а думаю попробовать это:
Очень часто регулярные выражения используются для того, чтобы проверить, является ли данная строка строкой в необходимом формате. Например следующий regexp предназначен для проверки того, что строка содержит корректный e-mail адрес:

/^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}$/


а вот точно нашеоооол!!! :
Microsoft VBScript Regular expressions 5.5
теперь вставляем такую фанкшн:
Код: Выделить всё
Public Function ereg(ByVal nVal As String) As Boolean
    Static mRegExp As New VBScript_RegExp_55.RegExp
    mRegExp.Pattern = "^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}$"
    ereg = mRegExp.Test(nVal)
End Function

работает лучше, чем приведенный пример, хотя тоже имеет право на жизнь ;)
спасибо всем

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.08.2006 (Ср) 14:17

Только выражение я бы сменил.
Во-первых, может быть я захочу две точки в имени использовать.
А во-вторых, ящик может быть в зоне .info.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.08.2006 (Ср) 14:18

И в третьих. Посчитает ли парсер за слово выражение "part1-part2"?
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.08.2006 (Ср) 14:54

Нет. По определению, \w -- это буква, цифра или подчёркивание.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.08.2006 (Ср) 14:56

Т.е. отправить письмо на адрес test@vb-streets.ru я не смогу?
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.08.2006 (Ср) 15:10

Нет.
Зато с двумя точками проблемы, как мне кажется, нет.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 73

    TopList