UNPKG

extract-email-address

Version:

Extracts email address from an arbitrary text input.

85 lines (75 loc) 1.92 kB
import { extractEmail } from './extractEmail'; import test from 'ava'; const fixtures = [ 'foo bar baz at gajus@gajus.com', 'gajus@gajus.com', 'GAJUS@GAJUS.COM', ':gajus@gajus.com', '📧gajus@gajus.com', 'gajus@gajus.com.', 'foo gajus@gajus.com bar', 'foo gajus [at] gajus [dot] com', 'foo g a j u s [at] g a j u s [dot] c o m', '<gajus@gajus.com>', '【email: gajus@gajus.com】', '<a href="/contact">contact: gajus@gajus.com</a>', '"mailto:gajus@gajus.com"', 'https://gajus@gajus.com', ]; for (const fixture of fixtures) { test('extracts email ("' + fixture + '")', (t) => { t.deepEqual(extractEmail(fixture), [ { email: 'gajus@gajus.com', }, ]); }); } test('extracts multiple email addresses', (t) => { t.deepEqual(extractEmail('foo@bar.com baz@qux.com'), [ { email: 'foo@bar.com', }, { email: 'baz@qux.com', }, ]); }); test('extracts email (gajus+test@gajus.com)', (t) => { t.deepEqual(extractEmail('gajus+test@gajus.com'), [ { email: 'gajus+test@gajus.com', }, ]); }); test('extracts email (gajus.gajus@gajus.com)', (t) => { t.deepEqual(extractEmail('gajus.gajus@gajus.com'), [ { email: 'gajus.gajus@gajus.com', }, ]); }); test('extracts email (gajus.gajus+test@gajus.com)', (t) => { t.deepEqual(extractEmail('gajus.gajus+test@gajus.com'), [ { email: 'gajus.gajus+test@gajus.com', }, ]); }); test('excludes emails with invalid TLD (gajus@gajus.png)', (t) => { t.deepEqual(extractEmail('gajus@gajus.png'), []); }); test('removes duplicates email', (t) => { t.deepEqual(extractEmail('gajus@gajus.com gajus@gajus.com'), [ { email: 'gajus@gajus.com', }, ]); }); test('extracts email mailto', (t) => { t.deepEqual(extractEmail('mailto%3Ajohn%2Bsmith%40gajus.com'), [ { email: 'john+smith@gajus.com', }, ]); });