如何将电子邮件地址中的用户名转换为星号。用户名中的第一个和最后一个字母保持原样,其余部分替换为(*)。
示例:
mhyunf@gmail.com
进入
m****f@gmail.com
答案 0 :(得分:9)
你可以用环顾四周来做。
/(?!^).(?=[^@]+@)/
(?!^)
背后的负面看法。检查字符是否前面没有字符串的开头。这可确保不选择第一个字符。
.
匹配单个字符。
(?=[^@]+@)
积极向前看。确保匹配的单个字符后跟@
以外的任何内容(由[^@]
确保),然后是@
示例强>
preg_replace("/(?!^).(?=[^@]+@)/", "*", "mhyunf@gmail.com")
=> m****f@gmail.com
答案 1 :(得分:0)
您可以替换以下正则表达式:
/^([a-zA-Z])[^@]*([a-zA-Z].*)$/
with:
/\1****\2/
答案 2 :(得分:0)
或者如果你不想使用正则表达式,你可以做这样的事情
/webroot/js
答案 3 :(得分:0)
function hideEmail($email, $domain_ = false){
$seg = explode('@', $email);
$user = '';
$domain = '';
if (strlen($seg[0]) > 3) {
$sub_seg = str_split($seg[0]);
$user .= $sub_seg[0].$sub_seg[1];
for ($i=2; $i < count($sub_seg)-1; $i++) {
if ($sub_seg[$i] == '.') {
$user .= '.';
}else if($sub_seg[$i] == '_'){
$user .= '_';
}else{
$user .= '*';
}
}
$user .= $sub_seg[count($sub_seg)-1];
}else{
$sub_seg = str_split($seg[0]);
$user .= $sub_seg[0];
for ($i=1; $i < count($sub_seg); $i++) {
$user .= ($sub_seg[$i] == '.') ? '.' : '*';
}
}
$sub_seg2 = str_split($seg[1]);
$domain .= $sub_seg2[0];
for ($i=1; $i < count($sub_seg2)-2; $i++) {
$domain .= ($sub_seg2[$i] == '.') ? '.' : '*';
}
$domain .= $sub_seg2[count($sub_seg2)-2].$sub_seg2[count($sub_seg2)-1];
return ($domain_ == false) ? $user.'@'.$seg[1] : $user.'@'.$domain ;
}