簡體   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