我的联系非常简单,但出于业务需求,我们需要使用联系用户的电子邮件验证公司的网址
如果您的电子邮件地址为 user@examplecompany.com ,并且您的网址为 http://examplecompany.com ,则该表单将会通过。
我正在尝试使用正则表达式来实现它,但是我无法终生,找出我做错了什么。
到目前为止,这是我的代码:
validateEmail = (email, url) => {
let rootUrl = url.match(/^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/?\n]+)/)[1];
let emailDomain = email.match(/@(.*)/)[1];
return rootUrl === emailDomain;
}
我的emailDomain返回undefined
。
答案 0 :(得分:3)
我尝试如下使用正则表达式实现它。
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上不起作用)提取主机名,然后提取域名以与电子邮件地址的域名进行比较。