如 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 ![]() 再次审了一下题,不是变前四个,是保留最后四个,那就从右到左枚举,前四个数字跳过,然后断开这个字符串,后面的数字用正则全部换成星号,再把字符串拼回来。 |
![]() | 4 evilic 2016-01-09 00:30:37 +08:00 截断后 4 个,前面的正则替换 d ,然后加回后 4 个。 |
5 sumhat 2016-01-09 01:09:16 +08:00 ![]() 大约是这个样子,需要根据语言的不同而做转义:/(?=\d.*\d.*\d.*\d.*\d)(\d)/gm 相关代码: https://gist.github.com/sumhat/32e6afec88a6a9a8b575 |