这是一个angular字符串过滤器,可以格式化常用字符串的显示,还有隐私遮挡。您可以自由选择是否格式化或保留原样,当然隐私遮挡也是提供您自由选择。 你不用但心你传入的字符串中间是否有空格,程序将自动去除中间多余的空格。
- 如这样的字符串:"13 01 23 45 6 7 8"程序最后会去除所有的空格显示这样13012345678
- 如这样的字符串:"13 01 23 45 6 7 8"程序最后会去除所有的空格显示这样130 1234 5678
- 如这样的字符串:"13 01 23 45 6 7 8"程序最后会去除所有的空格显示这样130****5678
- 如这样的字符串:"13 01 23 45 6 7 8"程序最后会去除所有的空格显示这样130 **** 5678
- 如这样的字符串:"0 7 5 5345 6 5 678-8 789"程序最后显示这样0755-34565678-8789
- 如这样的字符串:"0 7 5 5345 6 5 678-8 789"程序最后显示这样0755-34****78-8789
- 如这样的字符串:"0 7 5 5345 6 5 678"程序最后显示这样0755-34565678
- 如这样的字符串:"0 7 5 5345 6 5 678"程序最后显示这样0755-34****78
可以格式化以下类型的字符串类型
- 手机号
- 固定电话
- 银行卡
- 普通数字卡号
- 身份证
- 姓名
- 用户名
- 电子邮箱
好了现在介绍使用方法
format:是否格式化
hidden:是否启用隐私遮挡
配制默认值是false
<!-- 手机号码格式化并启用隐私遮挡,返回 136 **** 5678 -->
手机号码:<div>{{'13612345678' | strCover:"{format: true,hidden: true}"}}</div>
<!-- 手机号码格式化不启用隐私遮挡,返回 136 1234 5678 -->
手机号码:<div>{{'13612345678' | strCover:"{format: true,hidden: false}"}}</div>
<!-- 手机号码不格式化不启用隐私遮挡,返回 13612345678 -->
手机号码:<div>{{'13612345678' | strCover:"{format: false,hidden: false}"}}</div>
<!-- 固定电话格式化并启用隐私遮挡,返回 +86755-34****78-8789 -->
固定电话:<div>{{'+86755-34565678-8789' | strCover:"{format: true,hidden: true}"}}</div>
<!-- 固定电话格式化并启用隐私遮挡,返回 0755-34****78-8789 -->
固定电话:<div>{{'0755-34565678-8789' | strCover:"{format: true,hidden: true}"}}</div>
<!-- 固定电话格式化并启用隐私遮挡,返回 34****78-8789 -->
<!--
它支持的固定电话号码格式如下
+8675534565678-1234 - 有国际区号、有国内区号、有固定电话号码,有分机号
075534565678-1234 - 没有国际区号、有国内区号、有固定电话号码,有分机号
34565678-1234 - 没有国际区号、没有国内区号、有固定电话号码,有分机号
34565678 - 没有国际区号、没有国内区号、有固定电话号码,没有分机号
+8675534565678 - 有国际区号、有国内区号、有固定电话号码,没有分机号
换句话来说就是固定电话号码是必须的,其它都可以没有
也就是这样的表达式:[ 国际区号、国内区号 ] 固定电话号码 [ 分机号 ]
格式化后的样子是[ [+国际区号]国内区号 - ] 固话前两位 (**** or ***) 固话号后两位 [ 区号 ]
-->
固定电话:<div>{{'34565678-8789' | strCover:"{format: true,hidden: true}"}}</div>
<--
************************************
*** 银行卡格式化支持16位与19位规则如下
************************************
格式化规则:4位1组,
如:8612 3423 4345 4567 678 (19位)
8612342343454567678 (19位)
8612 3423 4345 4567 (16位)
8612342343454567 (16位)
隐私保护:首尾两组明文显示,中间组保护
如:8612 **** **** **** 678 (19位)
8612************678 (19位)
8612 **** **** 4567 (16位)
8612********4567 (16位)
************************************
*** 普通数字卡号
************************************
格式化规则:3位1组,
如:861 234 234 345 456(非16位 or 非19位)
861 234 234(非16位 or 非19位)
861234234345456(非16位 or 非19位)
861234234(非16位 or 非19位)
隐私保护:首尾两组明文显示,中间组保护
861 *** *** *** 456(非16位 or 非19位)
861 *** 234(非16位 or 非19位)
861*********456(非16位 or 非19位)
861***234(非16位 or 非19位)
************************************
*** 中国大陆身份证
************************************
格式化规则:省市区码(6位)出生年月日(8位)个人身份编码(3位)校验码(1位),
如:101112 20180101 0011
如:101112201801010011
隐私保护:省市区码明文,出生年月日保护,个人身份编码前1位保护,后2位明文,校验码明文
如:101112 ******** *011
101112*********0011
姓名规则
*************************
*** 姓名规则
*************************
------------------------
英文名处理方式
------------------------
1、以【单词后空格】或【首字母大写】为单位拆分,【首】单词全显不隐藏。
2、从【第二个单词】开始匹配,每个单词【首、尾】各保留26%字符显示,中间以星号(*)填充。
例: 1.原文: Tovi Lau 返回匹配结果: Tovi L*u
2.原文: Thomas Alva Edison 返回匹配结果: Thomas A**a Ed**on
3.原文: WilliamHenryGates 返回匹配结果: William H***y G***s
4.原文: Michael Jackson 返回匹配结果: Michael Ja***on
------------------------
中文名处理方式
------------------------
1、以单个汉字为单位拆分,【尾】汉字保留。
2、从【第一个汉字开始 --> 倒数第二个汉字结束】 以星号(×)替换。
例: 1.原文: 桃伟 返回匹配结果: ×伟
2.原文: 爱迪生 返回匹配结果: ××生
3.原文: 比尔盖茨 返回匹配结果: ×××茨
4.原文: 迈克尔杰克逊 返回匹配结果: ×××××逊
------------------------
中英文混合名处理方式
------------------------
中文在前:
1、中文名:
1)、以【单个汉字】为单位拆分,【尾】汉字保留显示。
2)、从【第一个汉字开始 --> 倒数第二个汉字结束】 以星号(×)替换。
2、英文名:
1)、以【单词后空格】或【首字母大写】为单位拆分,【首】单词全显不隐藏。
2)、所有单词【首、尾】各保留26%字符显示,中间以星号(*)填充。
例:
原文: 迈克尔杰克逊 Michael Jackson 返回结果: ×××××逊 Mi***el Ja***on
英文在前:
1、中文名:
1)、以单个汉字为单位切割,【尾】汉字保留。
2)、从【第一个汉字开始 --> 倒数第二个汉字结束】 以星号(×)替换。
2、英文名:
1)、以【单词后空格】或【首字母大写】为单位拆分
2)、【首】单词全显。从【第二个单词】开始匹配,每个单词【首、尾】各保留26%字符显示,中间以星号(*)填充。
例:
原文: Michael Jackson 迈克尔杰克逊 返回匹配结果: Michael Ja***on ×××××逊}
************************
** 用户名
************************
参考姓名中英文方式
************************
** 电子邮箱
************************
用户名部分参考姓名中英文方式,邮箱域名部分保留(如:@qq.com,@vip.163.com)
tovi@qq.com
t**i@qq.com
liutaowei@vip.163.com
li*****ei@vip.163.com