Thread View: pl.comp.lang.javascript
6 messages
6 total messages
Started by Roman Tyczka
Tue, 12 Feb 2019 15:06
JS i regex
Author: Roman Tyczka
Date: Tue, 12 Feb 2019 15:06
Date: Tue, 12 Feb 2019 15:06
33 lines
979 bytes
979 bytes
Witam, Zamarzyło mi się sprawdzać poprawność e-maila, napisałem prosty kod: ... const reg = new RegExp('^[0-9a-z_.-]+@[0-9a-z.-]+.[a-z]{2,3}$', 'i'); return reg.test(email) == true; i działał, ale wiadomo, że e-maile bywają bardziej skomplikowane, więc poszukałem "grubszego" regexpa i znalazłem tutaj: https://emailregex.com/ więc naskrobałem w oparciu o powyższy wzorzec taki kod: const reg = new RegExp( '^(([^<>()[]\\.,;:s@"]+(.[^<>()[]\\.,;:s@"]+)' + '*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.' + '[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$', 'i'); return reg.test(email) == true; i ... przestało działać, why? Z kolei taka modyfikacja: const reg /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return reg.test(String(email).toLowerCase()); znowu działa... czego nie ogarniam? -- pozdrawiam Roman Tyczka
Re: JS i regex
Author: Wojciech Bancer
Date: Tue, 12 Feb 2019 16:06
Date: Tue, 12 Feb 2019 16:06
13 lines
355 bytes
355 bytes
On 2019-02-12, Roman Tyczka <noemail@because.no> wrote: > Witam, > > Zamarzy³o mi siê sprawdzaæ poprawno¶æ e-maila, napisa³em prosty kod: A potem jak w orange. Najpierw zarejestrowa³em sobie maila z koñcówk± .codes, a potem dodali spradzacza i ju¿ nie mogê na takiego maila siê logowaæ. I na co to komu? :) -- Wojciech Bañcer wojciech.bancer@gmail.com
Re: JS i regex
Author: Roman Tyczka
Date: Tue, 12 Feb 2019 16:43
Date: Tue, 12 Feb 2019 16:43
24 lines
869 bytes
869 bytes
On Tue, 12 Feb 2019 16:06:02 +0100, Wojciech Bancer wrote: > On 2019-02-12, Roman Tyczka <noemail@because.no> wrote: >> Witam, >> >> Zamarzyło mi się sprawdzać poprawność e-maila, napisałem prosty kod: > > A potem jak w orange. > Najpierw zarejestrowałem sobie maila z końcówką .codes, a potem dodali spradzacza > i już nie mogę na takiego maila się logować. > > I na co to komu? :) Ok Wojtku, masz absolutną rację! Właśnie z powodu domen dłużyszych niż 3 znaki chciałem to poprawić. Ale ja pytam o aspekt softwarowy, z czego wynika zgrzyt? ps. weryfikacja e-maila służy tylko ostrzeżeniu że coś jest nie tak, bez podania poprawnego nie otrzyma się na niego oczekiwanych profitów, więc imho warto o tym poinformować na etapie formularzowania... niekoniecznie cokolwiek blokując, ale ja nie z orange ;-) -- pozdrawiam Roman Tyczka
Re: JS i regex
Author: Borys =?utf-8?Q?
Date: Tue, 12 Feb 2019 16:59
Date: Tue, 12 Feb 2019 16:59
18 lines
797 bytes
797 bytes
Dnia Tue, 12 Feb 2019 16:06:02 +0100, Wojciech Bancer napisał(a): >> Zamarzyło mi się sprawdzać poprawność e-maila, napisałem prosty kod: > > A potem jak w orange. > Najpierw zarejestrowałem sobie maila z końcówką .codes, a potem dodali spradzacza > i już nie mogę na takiego maila się logować. To jeszcze pół biedy, bo dłuższe TLD typu .museum istnieją już wiele lat i do większości to chyba dotarło. Spróbuj jednak korzytać ze znaku + w części przed "małpą" (ficzer z Gmaila). Chyba praktycznie każdy popularny regexp bardziej skomplikowany niż .+@.+\..+ ma z tym problem. Autorze - nie wymyślaj koła na nowo, weź gotową bibliotekę, która sprawdza poprawność maila zgodnie z RFC. To wcale nie jest trywialne. -- Borys Pogoreło borys(#)leszno,edu,pl
Re: JS i regex
Author: Wojciech Bancer
Date: Tue, 12 Feb 2019 18:20
Date: Tue, 12 Feb 2019 18:20
36 lines
1133 bytes
1133 bytes
On 2019-02-12, Roman Tyczka <noemail@because.no> wrote: [...] >> A potem jak w orange. >> Najpierw zarejestrowa³em sobie maila z koñcówk± .codes, a potem dodali spradzacza >> i ju¿ nie mogê na takiego maila siê logowaæ. >> >> I na co to komu? :) > > Ok Wojtku, masz absolutn± racjê! W³a¶nie z powodu domen d³u¿yszych ni¿ 3 > znaki chcia³em to poprawiæ. I bêdziesz wspiera³ potem jak siê jeszcze co¶ zmieni? :P > Ale ja pytam o aspekt softwarowy, z czego wynika zgrzyt? Tak na oko: @(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.' to on siê tu spodziewa cyfr 0-9 (jeden do 3 znaków) potem znowu cyfr od 0 do 9 (jeden do znaków, a potem jeszcze raz. Dziwny ten regexp :) I jak to regexp rozbiera siê to ciê¿ko i czyta fatalnie. > ps. weryfikacja e-maila s³u¿y tylko ostrze¿eniu ¿e co¶ jest nie tak, bez > podania poprawnego nie otrzyma siê na niego oczekiwanych profitów, wiêc > imho warto o tym poinformowaæ na etapie formularzowania... niekoniecznie > cokolwiek blokuj±c, ale ja nie z orange ;-) Ludzko¶æ wymy¶li³a na t± okoliczno¶æ co¶ co siê nazywa "mail potwierdzaj±cy" z linkiem. :) -- Wojciech Bañcer wojciech.bancer@gmail.com
Re: JS i regex
Author: Cezary Tomczyk
Date: Wed, 13 Feb 2019 09:12
Date: Wed, 13 Feb 2019 09:12
41 lines
1380 bytes
1380 bytes
On 12/02/2019 16:59, Borys Pogoreło wrote: > Dnia Tue, 12 Feb 2019 16:06:02 +0100, Wojciech Bancer napisał(a): > >>> Zamarzyło mi się sprawdzać poprawność e-maila, napisałem prosty kod: >> >> A potem jak w orange. >> Najpierw zarejestrowałem sobie maila z końcówką .codes, a potem dodali spradzacza >> i już nie mogę na takiego maila się logować. > > To jeszcze pół biedy, bo dłuższe TLD typu .museum istnieją już wiele lat i > do większości to chyba dotarło. Spróbuj jednak korzytać ze znaku + w części > przed "małpą" (ficzer z Gmaila). Chyba praktycznie każdy popularny regexp > bardziej skomplikowany niż .+@.+\..+ ma z tym problem. > > Autorze - nie wymyślaj koła na nowo, weź gotową bibliotekę, która sprawdza > poprawność maila zgodnie z RFC. To wcale nie jest trywialne. Kiedyś korzystałem z różnych rozwiązań by sprawdzić poprawność email zgodny z RFC, ale poddałem się, bo co chwila znajdowałem jakiś przypadek, który nie przechodził walidacji, a powinien :-) Skończyło się to na: [TypeScript] public static isValidEmail(email: string): boolean { const parts = email.split('@'); if (parts.length !== 2) { return false; } if (parts[0].length === 0 || parts[1].length === 0) { return false; } return true; } -- Cezary Tomczyk http://www.ctomczyk.pl/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads