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