curriculum/challenges/english/blocks/daily-coding-challenges-javascript/68cae5b538ff798bbd4da005.md
Given a string, determine if it is a valid email address using the following constraints:
@ symbol.@):
a-z, A-Z), digits (0-9), dots (.), underscores (_), or hyphens (-).@):
validate("[email protected]") should return true.
assert.isTrue(validate("[email protected]"));
validate("[email protected]") should return true.
assert.isTrue(validate("[email protected]"));
validate("[email protected]") should return false.
assert.isFalse(validate("[email protected]"));
validate("[email protected]") should return false.
assert.isFalse(validate("[email protected]"));
validate("freecodecamp.org") should return false.
assert.isFalse(validate("freecodecamp.org"));
validate("develop.ment_user@c0D!NG.R.CKS") should return true.
assert.isTrue(validate("develop.ment_user@c0D!NG.R.CKS"));
validate("[email protected]") should return false.
assert.isFalse(validate("[email protected]"));
validate("[email protected]") should return false.
assert.isFalse(validate("[email protected]"));
validate("develop..ment_user@c0D!NG.R.CKS") should return false.
assert.isFalse(validate("develop..ment_user@c0D!NG.R.CKS"));
validate("git@[email protected]") should return false.
assert.isFalse(validate("git@[email protected]"));
function validate(email) {
return email;
}
function validate(email) {
if (email.includes('..')) return false;
const parts = email.split('@');
if (parts.length !== 2) return false;
const [local, domain] = parts;
if (local.startsWith('.') || local.endsWith('.')) return false;
if (!/^[a-zA-Z0-9._-]+$/.test(local)) return false;
if (!domain.includes('.')) return false;
const tld = domain.split('.').pop();
if (tld.length < 2 || !/^[a-zA-Z]+$/.test(tld)) return false;
return true;
}