繁体   English   中英

替换字符串开头和结尾的几个字符

[英]replace the few characters from first and last of string

用*字符替换第一个和最后几个字符,我就能解决str1的情况。 我该如何解决剩下的一个。 现在,我能够掩盖最后4个字符。

我如何掩盖前3个或4个字符。 正则表达式模式有什么问题

 var str1 = "1234567890123456"; str1 = str1.replace(/\\d(?=\\d{4})/g, "*"); console.log(str1) var str2 = "123-456-789-101112" str2 = str2.replace(/\\d(?=\\d{4})/g, "*"); console.log(str2) // expected ***-***-***-**1112 var str3 = "abc:def:12324-12356" str3 = str3.replace(/\\d(?=\\d{4})/g, "*"); console.log(str3) // expected ***:***:*****-*2356 

现在它只屏蔽了最后的四个字符,我怎么也可以屏蔽前面的四个字符

1234567890123456 => 1234********3456
123-456-789-101112 => 123-4**-***-**1112
abc:def:12324-12356 => abc:d**:*****-*2356

一种选择是提前查找非空格字符,后跟4位数字。 由于您也想替换字母字符,因此请使用字符集[az\\d]而不是\\d

 const repl = str => console.log(str.replace(/[az\\d](?=\\S*\\d{4})/g, "*")); repl("1234567890123456"); repl("123-456-789-101112"); repl("abc:def:12324-12356"); 

如果您还想保留前4个字母数字字符,则要复杂得多-匹配并捕获前4个字符(可能会用分隔符穿插),然后捕获中间的字符,然后捕获后4个数字。 使用替换函数将第二组中的所有非分隔符替换为* s:

 const repl = str => console.log(str.replace( /((?:[az\\d][-@.:]?){4})([-@:.az\\d]+)((?:[az\\d][-@.:]?){4})/ig, (_, g1, g2, g3) => g1 + g2.replace(/[az\\d]/ig, '*') + g3 )); repl("1234567890123456"); repl("123-456-789-101112"); repl("abc:def:12324-12356"); repl("test@test.com"); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM