使用 RegEx 将电子邮件与公司的 URL 匹配

我有一个非常简单的联系人,但出于业务需求,我们需要使用联系用户的电子邮件验证公司的 url


如果您的电子邮件是user@examplecompany.com并且您的 url 是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。


慕妹3242003
浏览 234回答 1
1回答

慕妹3146593

我尝试使用正则表达式实现它,如下所示。const validateEmail = (email, url) => {  let regex = /(https?:\/\/)?(\w*\.)?(\w*\.\w*)/  let rootUrl = url.match(regex)[3];  let emailDomain = email.match(/@(.*)/)[1];  return rootUrl === emailDomain;}// Testinglet 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)提取主机名,然后提取域名与电子邮件地址的域名进行比较。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript