我试图检索我的网站用户的领域,以分配他们特定的组织为基础的特权。
如果他们的电子邮件地址是email@example.com,我想提取例子。如果是email@ex.ample.com,我想提取ex.ample
我的正则表达式是(?<=@)^.(?=.)
但我很难将它集成到代码中。我的代码如下:
$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上遇到了一个错误:
我做错了什么?
发布于 2021-03-25 08:01:38
您可以使用捕获组来匹配该部件,而不是使用“替换”。
[^\s@]@([^\s@]+)\.[a-z]{2,}模式匹配:
[^\s@]@匹配除空格char或@以外的任何字符(捕获组1 [^\s@]+匹配1+乘以除空白字符或@以外的任何字符)闭组1\.[a-z]{2,}匹配一个点(注意,以转义点)和2个或更多字符a-z。
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))
)
发布于 2021-03-25 06:28:18
不如做些不像regex那样花哨的东西吧:
function retrieveTeamFromEmail(userEmail) {
const at = userEmail.indexOf('@');
const dot = userEmail.lastIndexOf('.');
return userEmail.substring(at, dot);
}https://stackoverflow.com/questions/66793862
复制相似问题