屏蔽邮件id的Regex表达式



需要一个正则表达式来创建无法识别的电子邮件地址,如

  1. 如果用户名(@之前)小于8个字符,则使用*(*)将长度改为8
  2. 只显示前3个字符,其余掩码使用开始(*)
  3. 如果用户名少于3个字符,显示第一个字符,并使长度为8 *

test123456789@gmail.com -> tes**********@gmail.com 
test1@gmail.com -> tes*****@gmail.com // make length to 8
tes@gmail.com -> t*******@gmail.com // make length to 8

谁能建议上面

的正则表达式?

我认为regex对于这种类型的问题有点过分,这里是我很快想到的解决方案,只是分割字符串并检查用户名长度。

func mask(email: String) -> String? {
let components = email.components(separatedBy: "@")

guard components.count == 2 else { return nil }

let username = components[0]

guard !username.isEmpty else { return nil }

let maskedUsername: String
if username.count <= 3 {
maskedUsername = "(username[username.startIndex])(String(repeating: "*", count: 7))"
} else if username.count <= 8 {
maskedUsername = "(username.prefix(3))(String(repeating: "*", count: 5))"
} else {
maskedUsername = "(username.prefix(3))(String(repeating: "*", count: username.count - 3))"
}
return "(maskedUsername)@(components[1])"
}

相关内容

  • 没有找到相关文章

最新更新