【问题标题】:JS/jQuery - Transform phone number and email to show only first and last charactersJS/jQuery - 转换电话号码和电子邮件以仅显示第一个和最后一个字符
【发布时间】:2016-10-17 02:24:58
【问题描述】:

如何从 API 响应动态转换电话号码和电子邮件以隐藏非极端字符?

例如:

  1. 发票将发送给您的电子邮件:n*****1@gmail.com

  2. OTP 将发送到您的电话号码:7******213

API 包含键:值,因此我将隔离电话号码和电子邮件,因此无需从较大的字符串中筛选它们。电话号码始终为 10 位数字,我需要显示第 1 位和最后 3 位数字。

PS:我很讨厌正则表达式:(

【问题讨论】:

  • 使用substr() 获取您想要的字符串部分。或者使用正则表达式。
  • 您可以在浏览器中隐藏部分电话或电子邮件,但 API 响应包含完整信息。 (感兴趣的用户可以找到它)。在服务器端执行。

标签: javascript jquery regex string-matching


【解决方案1】:

要转换电话号码,请使用:

'740-344-4484'.replace(/(\d{1})(.*)(\d{3})/, '$1******$3')

最后,转换电子邮件:

'ScarlettAppleton@dayrep.com'.replace(/(\w{1})(.*)(\w{1})@(.*)/, '$1******$3@$4')

输出分别是:

"7******484" 
"S******n@dayrep.com"

【讨论】:

  • 我希望将电子邮件字符长度保持为原始长度。
【解决方案2】:

考虑以下使用 String.splitString.replaceString.slice 和 ES6 String.repeat 函数的扩展解决方案:

var email = "nick_tomson1@gmail.com", phone = "7112459213";

function transformEntry(item, type) {
    switch (type) {
        case 'email':
            var parts = item.split("@"), len = parts[0].length;
            return email.replace(parts[0].slice(1,-1), "*".repeat(len - 2));
        case 'phone':
            return item[0] + "*".repeat(item.length - 4) + item.slice(-3);
       default: 
            throw new Error("Undefined type: " + type);
    }        
}

console.log(transformEntry(email, 'email'));  // n**********1@gmail.com
console.log(transformEntry(phone, 'phone'));  // 7******213

【讨论】:

  • 这对我有用。显示电话号码的最后 3 位数字时出错。修好了。
  • @eNeMetcH,我很抱歉,我无意中错过了那一刻。谢谢指出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
相关资源
最近更新 更多