尝试将电子邮件混淆为这种格式:
a***@******m
意思是我需要一个正则表达式来匹配除第一个和最后一个字符以及@以外的所有内容。
我可以为所有内容使用[^@]
,但如何忽略字符串中的最后一个和第一个字符?锚似乎是要走的路,但是确切的语法是什么?
答案 0 :(得分:3)
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
没有标记语言,但是如果您使用的是编程语言,并且要确保电子邮件地址中有@符号并且显示了第一个和最后一个字符,则可以使用捕获组并使用用*
替换要显示的组:
^(\S)([^@\n]*)(@)([^@\n]*)(\S)$
^
字符串的开头(\S)
捕获组1,匹配一个非空白字符([^@\s]*)
捕获组2,匹配0+次而不是@或空格字符(@)
捕获第3组,匹配@
([^@\s]*)
捕获第4组,匹配0+次,而不是@或空格字符(\S)
捕获组5,匹配一个非空白字符$
字符串结尾例如使用javascript
let pattern = /^(\S)([^@\s]*)(@)([^@\s]*)(\S)$/;
[
"test@test.com",
"te st@te st.com",
"test@test@test.com",
"te@nl",
"t@t",
"test@",
"@tes",
"test"
].forEach(str => {
let replaced = str.replace(pattern, function(_, g1, g2, g3, g4, g5) {
return g1 + g2.replace(/./g, "*") + g3 + g4.replace(/./g, "*") + g5;
});
console.log(replaced);
});
答案 4 :(得分:-2)