1 回答
![?](http://img1.sycdn.imooc.com/533e4d660001312002000200-100-100.jpg)
TA贡献1820条经验 获得超9个赞
我尝试使用正则表达式实现它,如下所示。
const validateEmail = (email, url) => {
let regex = /(https?:\/\/)?(\w*\.)?(\w*\.\w*)/
let rootUrl = url.match(regex)[3];
let emailDomain = email.match(/@(.*)/)[1];
return rootUrl === emailDomain;
}
// Testing
let emails = ["user@examplecompany.com", "user@othercompany.com"]
let urls = ["http://examplecompany.com", "https://examplecompany.com", "http://www.examplecompany.com", "https://www.examplecompany.com","examplecompany.com", "www.examplecompany.com"]
urls.forEach((url) => {
emails.forEach((email) => {
let valid = validateEmail(email, url)
console.log(`email = ${email}, url = ${url}, isValid: ${valid}`)
})
})
您也可以尝试使用URL api(当然,它不适用于IE)提取主机名,然后提取域名与电子邮件地址的域名进行比较。
添加回答
举报