使用正则表达式和Javascript部分隐藏电子邮件地址



我正在尝试使用正则表达式隐藏电子邮件地址,除了前两个字符和电子邮件域。

在这种情况下,该函数将替换我想要保留的字符。

email.replace(/^[A-Za-z]{2}/, "**" ).replace(/@[^:]*/, "**" )

我得到什么:email@domain.com > **ail**预期:em***@domain.com

这里有谁知道如何更改我的正则表达式以获得预期的结果?

谢谢!

这对我来说非常有效:

const email = "username@domain.tld"
const partialEmail = email.replace(/(w{3})[w.-]+@([w.]+w)/, "$1***@$2")
console.log(partialEmail)

它捕获第一组中的前 3 个字符(只需根据需要替换数字(和第二组中的域。

我只能通过replace中的函数来实现这一点。不确定仅使用正则表达式是否可以实现。看看吧:

let hideEmail = function(email) {
return email.replace(/(.{2})(.*)(?=@)/,
function(gp1, gp2, gp3) { 
for(let i = 0; i < gp3.length; i++) { 
gp2+= "*"; 
} return gp2; 
});
};
document.querySelector("button").addEventListener("click", function() {
let emailField = document.querySelector("input");

console.log(hideEmail(emailField.value));
});
<input type="email" value="abcdef@gmail.com">
<button>Hide e-mail</button>

你可以试试这个,显示前两个字符,其余的总是***在用户部分:

var email = "exampleexample@example.com";
let hide = email.split("@")[0].length - 2;//<-- number of characters to hide
var r = new RegExp(".{"+hide+"}@", "g")
email = email.replace(r, "***@" );
console.log(email)

我不知道这三个*是否是一个要求,但我认为是个好主意,因为你隐藏了真正的长度。

你也可以有这个,(?<=^[A-Za-z0-9]{2}).*?(?=@)

演示

我在飞镖的颤动中找到了一个解决方案

"example@gmail.com".replaceRange(
0,
"example@gmail.com"
.indexOf("@") -
3,
"****")

它将显示这样的结果-ple@gmail.com

最新更新