|
получить адрес эл. почты из строки A_G, Bazooka, qwerty, X Leshiy, Fedor-1971, Irbis, МимохожийОднако, paramedic, who respawn, JohnGilbert, torgm, Prog_man, Timon1405, vicof, Бычье сердце, N1troZeus, Климов Сергей, Somebody, Мультук, timurhv, Aleks73, Fish, integer, nick86, maxar, KJlag, RVN, Chameleon1980, Garykom, ДенисСмирнов, San787, kupec, MWWRuza, alexela, Хряк, calmius, Шаграм, Oldman06, 1cVandal, probably, Доминошник, Tatitutu, kir-g, obs191, oleg_km, АгентБезопаснойНацио, Гипервизор, d4rkmesa, rozer76, phabeZ, ads55, Builder, Tarlich, Daniilvb, renegade, Джордж1, crotnn, shuhard, Crusher, Lama12, Hawk_1c, ndrv, craxx, Homer, Vstur, zenik, p-soft, chelentano, Hmster, Волшебник, _Batoo
| ☑ | ||
|---|---|---|---|---|
|
0
Prog_man
гуру
10.03.26
✎
15:58
|
Добрый день,
подскажите как эл.почту получить из строки? сейчас код такой: ПодробностиФункция мПолучитьЭлПочтуОтправителя(Строка) Шаблон = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"; RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.Global = Истина; RegExp.Pattern = Шаблон; Результат = Новый Массив; Matches = RegExp.Execute(Строка); Для Каждого Match Из Matches Цикл Результат.Добавить(Match.Value); КонецЦикла; Возврат Результат; КонецФункции возвращает пустой массив платформа 1С:Предприятие 8.5 (8.5.1.1150) |
|||
|
1
Мультук
гуру
10.03.26
✎
15:22
|
(0)
А как быть с адресами а-ля мультук@миста.рф ? [хе-хе] |
|||
|
2
Prog_man
гуру
10.03.26
✎
15:27
|
(1) с регулярками ранее не работал, может шаблон не верный (то что нагуглил), почта типа мультук@миста.рф, в 1с может и не грузиться
|
|||
|
3
ads55
10.03.26
✎
15:30
|
(2) а почему не ищешь разницу между первый пробел до "@" и первый пробел после "@"?
Так же проще, чем регулярки? |
|||
|
4
Chameleon1980
10.03.26
✎
15:40
|
(3) наверное, "мы не ищем легких путей" :)
|
|||
|
5
Prog_man
гуру
10.03.26
✎
15:44
|
(3) хотел регулярки по юзать )) по сабжу то есть варианты, почему пустой массив?
|
|||
|
6
ads55
10.03.26
✎
15:49
|
(5) "по сабжу то есть варианты" - нет. Больше не мешаю.
"[a-zA-Z0-9.-]+\" - вот это - 9."-"]+"\" - кавычками лишнее выделил. |
|||
|
7
JohnGilbert
10.03.26
✎
15:50
|
https://stepik.org/course/107335/syllabus
Бесплатная часть по синтаксису регулярок проходится за 4-5 часов. Вопросы отпадут быстро. |
|||
|
8
JohnGilbert
10.03.26
✎
15:51
|
А на кой ляд VBScript.RegExp, если есть СтрНайтиПоРегулярномуВыражению?
|
|||
|
9
rozer76
10.03.26
✎
15:55
|
(0) Шаблон = "^[a-zA-Zа-яА-Я0-9._%+-]+@[a-zA-Zа-яА-Я0-9.-]+\.[a-zA-Zа-яА-Я]{2,}$";
|
|||
|
10
rozer76
10.03.26
✎
15:56
|
+ (9) случай в (1) обработает
|
|||
|
11
rozer76
10.03.26
✎
15:57
|
(8) платформа старая
|
|||
|
12
Prog_man
гуру
10.03.26
✎
15:57
|
(8) тестил, тоже не работало, видимо в шаблоне дело
|
|||
|
13
Prog_man
гуру
10.03.26
✎
15:58
|
(11) 1С:Предприятие 8.5 (8.5.1.1150)
|
|||
|
14
Timon1405
10.03.26
✎
15:58
|
(0) у Вас в выражении ^ и $ лишние: это якоря начала и конца строки, то есть подходят только строки которые являются емэйлом, но не содержат где-то емэйл
|
|||
|
15
JohnGilbert
10.03.26
✎
16:01
|
[\w\d.-]+@[\w]+.[\w]+
А дальше уже думать, что у тебя в начале и в конце (^&) или (\b) |
|||
|
16
JohnGilbert
10.03.26
✎
16:03
|
(13) Значит используй СтрНайтиПоРегулярномуВыражению
|
|||
|
17
Prog_man
гуру
10.03.26
✎
16:04
|
(16) видимо так и сделаю, сейчас проверю шаблон
|
|||
|
18
JohnGilbert
10.03.26
✎
16:05
|
(17) https://regex101.com/ здесь можно регулярки отлаживать, помогает. А так респект за неиспользование способа из (3).
|
|||
|
19
Timon1405
10.03.26
✎
16:11
|
(17) RegExp.Ignorecace = истина надо ставить, у вас буквы только большие в шаблоне. в СтрНайтиПоРегулярномуВыражению оно 3м параметром идет, тоже важно истину писать
|
|||
|
20
Prog_man
гуру
10.03.26
✎
16:13
|
благодарю, получилось
|
|||
|
21
JohnGilbert
10.03.26
✎
16:14
|
(19) Очень спорный совет
|
|||
|
22
Prog_man
гуру
10.03.26
✎
16:15
|
(19) ок, вроде и так работает
|
|||
|
23
JohnGilbert
10.03.26
✎
16:16
|
(22) Не надо. \w - уже буквы в верхней и нижней раскладке.
|
|||
|
24
Prog_man
гуру
10.03.26
✎
16:21
|
(23) 👍
|
|||
|
25
probably
10.03.26
✎
16:37
|
{2,} - это означает 2 символа? то есть адреса типа .com не не рассматриваются?
а так же, правильно ли я понимаю, что не рассматриваются адреса формата jet.msk.su? |
|||
|
26
Мимохожий Однако
10.03.26
✎
16:39
|
БСП 3.2.1 Результат = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(СписокАдресов)
|
|||
|
27
Timon1405
10.03.26
✎
16:40
|
(25) это 2+ символа, то есть .ru .com .other подойдет, а .z не подойдет
|
|||
|
28
Fish
гуру
10.03.26
✎
16:40
|
(26) Ну вот. Сразу с козырей зашел.
|
|||
|
29
JohnGilbert
10.03.26
✎
16:43
|
(15) Точки экранировать забыл.
(25) [\w\d\.-]+@[\w]+\.[\w\.]+ так найдет адреса с любым количеством точек |
|||
|
30
JohnGilbert
10.03.26
✎
16:46
|
(29) [\w\d\.-]+@[\w\.]+
упрощается до такой формы. \w не содержит пробел. |
|||
|
31
Fish
гуру
10.03.26
✎
16:53
|
(30) Неправильно. кривой адрес типа fgdfg@ya..ya__ находит
|
|||
|
32
JohnGilbert
10.03.26
✎
16:56
|
(31) Согласен) Но, если речь про реальные адреса почты, мы такой не встретим, т.к. там ограничения почтовых сервисов на нейминг. Если искать в сыром тексте адреса имейлов, то будет куча корнер кейсов, которые надо обыгрывать, как ваш.
|
|||
|
33
Fish
гуру
10.03.26
✎
16:59
|
(32) На самом деле вариант (26) решает задачу. В т.ч. и проводит проверку корректности адреса. Зачем, как Гений, изобретать велосипеды?
|
|||
|
34
JohnGilbert
10.03.26
✎
17:00
|
(33) Спорить не буду вовсе. Регулярки - чисто академический интерес. Пару раз меня выручили, там где типовых методов нет.
В ситуации ТС использовать метод из (26) лучший вариант. |
|||
|
35
Fish
гуру
10.03.26
✎
17:02
|
(32) "если речь про реальные адреса почты, мы такой не встретим" - Речь в (0) про получение адреса из строки. Откуда взята эта строка - неизвестно, и реальные там адреса или баба Маня руками с бумажки вбивает, тоже неизвестно. Поэтому, имхо, лучше проверять корректность, чем не проверять.
|
|||
|
36
JohnGilbert
10.03.26
✎
17:04
|
(35) Вы правы. Т.к. уточнений про бабу Маню не было, я исходил из реальных адресов.
Метод из (26) вроде тоже это не решает. // Параметры: // СписокАдресов - Строка - адреса электронной почты, разделитель - запятая, либо точка с запятой: // Получатель1 <Адрес1>, Получатель 2 <Адрес2>... Получатель N <АдресN>. Тут тоже придётся адреса найти и передать. |
|||
|
37
Prog_man
гуру
10.03.26
✎
17:18
|
(35) там типовой текст, из заявки с сайта, т.е. если в форму обратной связи, заполнят не корректный адрес, то почта и не придет. в самой форме тоже проверка на корректность адреса эл. почты. (26) видимо не подойдет, там список адресов нужно передавать.
|
|||
|
38
Мимохожий Однако
10.03.26
✎
17:48
|
(37) Проверял или предполагаешь?
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |