首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WIX Velo -从用户电子邮件中提取域- Regex问题

WIX Velo -从用户电子邮件中提取域- Regex问题
EN

Stack Overflow用户
提问于 2021-03-25 05:57:01
回答 2查看 121关注 0票数 1

我试图检索我的网站用户的领域,以分配他们特定的组织为基础的特权。

如果他们的电子邮件地址是email@example.com,我想提取例子。如果是email@ex.ample.com,我想提取ex.ample

我的正则表达式是(?<=@)^.(?=.)

但我很难将它集成到代码中。我的代码如下:

代码语言:javascript
复制
$w.onReady(async function () {
 let userEmail = await memberData.loginEmail;
    retrieveTeamFromEmail(userEmail);
    $w('#userAccountSetupIntroText').text = ("Let's set up your account. We have your company as " +
        userEmail + ".\n\nTell us a little more about yourself.");
})

function retrieveTeamFromEmail(userEmail) {
 return userEmail
        .replace(?<=@)[^.]*.[^.]*(?=\.);
}

我在.replace上遇到了一个错误:

.replace错误

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-25 08:01:38

您可以使用捕获组来匹配该部件,而不是使用“替换”。

代码语言:javascript
复制
[^\s@]@([^\s@]+)\.[a-z]{2,}

模式匹配:

  • [^\s@]@匹配除空格char或@以外的任何字符
  • (捕获组1
    • [^\s@]+匹配1+乘以除空白字符或@以外的任何字符

  • )闭组1
  • \.[a-z]{2,}匹配一个点(注意,以转义点)和2个或更多字符a-z。

Regex演示

代码语言:javascript
复制
const pattern = /[^\s@]@([^\s@]+)\.[a-z]{2,}/;

function retrieveTeamFromEmail(s) {
  const m = s.match(/[^\s@]@([^\s@]+)\.[a-z]{2,}/, s);
  return m ? m[1] : s;
}
[
  "email@example.com",
  "email@ex.ample.com",
  "test"
].forEach(s =>
  console.log(retrieveTeamFromEmail(s))
)

票数 0
EN

Stack Overflow用户

发布于 2021-03-25 06:28:18

不如做些不像regex那样花哨的东西吧:

代码语言:javascript
复制
function retrieveTeamFromEmail(userEmail) {
    const at = userEmail.indexOf('@');
    const dot = userEmail.lastIndexOf('.');
    return userEmail.substring(at, dot);
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66793862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档