You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
"use strict" ;
const ValidationError = require ( "@validatem/error" ) ;
const isString = require ( "@validatem/is-string" ) ;
let commonErrors = [
/^mailto:.+$/ , // mailto:email@example.com
/^.+<[^>]+>$/ , // Real Name <email@example.com>
] ;
let validEmail = /.@./ ; // Contains an @, and is preceded and succeeded by at least one character
module . exports = [
isString ,
function isEmailAddress ( value ) {
// TODO: Include explanation in README as to how checking for the presence of '@' really *is* the correct check in practice, and that any further validation should be done by actually trying to send an e-mail
if ( ! validEmail . test ( value ) || commonErrors . some ( ( errorRegex ) => errorRegex . test ( value ) ) ) {
throw new ValidationError ( ` Must be an e-mail address ` ) ;
}
}
] ;