Path: csiph.com!.POSTED.208-71-239-109.cust.centrio.cz!not-for-mail From: Cezary Tomczyk Newsgroups: pl.comp.lang.javascript Subject: Re: JS i regex Date: Wed, 13 Feb 2019 09:12:24 +0100 Organization: csiph.com Internet News Service Message-ID: References: <11r27xouiiy2h.dlg@tyczka.com> <1299uga18h0jx$.11l9cirdbu4na$.dlg@40tude.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Wed, 13 Feb 2019 08:12:25 -0000 (UTC) Injection-Info: csiph.com; posting-host="208-71-239-109.cust.centrio.cz:109.239.71.208"; logging-data="11239"; mail-complaints-to="admin@kev009.com" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.5.0 In-Reply-To: <1299uga18h0jx$.11l9cirdbu4na$.dlg@40tude.net> Content-Language: en-US Xref: csiph.com pl.comp.lang.javascript:3598 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/