如 A1BC23D5678 ,替换后变成 A*BC**D5678 。有点麻烦的是数字的位置不是固定的。
1
shinwood 2016 年 1 月 8 日
感觉不用正则还快一点,把字符串按字母拆开,从左到右枚举,遇到是数字的,变星号,直到累计变了 4 次后结束枚举。
|
2
longaiwp 2016 年 1 月 8 日
直接写个方法处理字符串吧,这个你写正则反而没那么直接
|
3
shinwood 2016 年 1 月 8 日 再次审了一下题,不是变前四个,是保留最后四个,那就从右到左枚举,前四个数字跳过,然后断开这个字符串,后面的数字用正则全部换成星号,再把字符串拼回来。
|
4
evilic 2016 年 1 月 9 日
截断后 4 个,前面的正则替换 d ,然后加回后 4 个。
|
5
sumhat 2016 年 1 月 9 日 大约是这个样子,需要根据语言的不同而做转义:/(?=\d.*\d.*\d.*\d.*\d)(\d)/gm
相关代码: https://gist.github.com/sumhat/32e6afec88a6a9a8b575 |