redtea

求一个正则表达式替换字符串里的数字为星号,只保留最后 4 个。

  •  
  •   redtea · Jan 8, 2016 · 2549 views
    This topic created in 3808 days ago, the information mentioned may be changed or developed.

    如 A1BC23D5678 ,替换后变成 A*BC**D5678 。有点麻烦的是数字的位置不是固定的。

    6 replies    2016-01-09 02:01:17 +08:00
    shinwood
        1
    shinwood  
       Jan 8, 2016
    感觉不用正则还快一点,把字符串按字母拆开,从左到右枚举,遇到是数字的,变星号,直到累计变了 4 次后结束枚举。
    longaiwp
        2
    longaiwp  
       Jan 8, 2016
    直接写个方法处理字符串吧,这个你写正则反而没那么直接
    shinwood
        3
    shinwood  
       Jan 8, 2016   ❤️ 1
    再次审了一下题,不是变前四个,是保留最后四个,那就从右到左枚举,前四个数字跳过,然后断开这个字符串,后面的数字用正则全部换成星号,再把字符串拼回来。
    evilic
        4
    evilic  
       Jan 9, 2016
    截断后 4 个,前面的正则替换 d ,然后加回后 4 个。
    sumhat
        5
    sumhat  
       Jan 9, 2016   ❤️ 1
    大约是这个样子,需要根据语言的不同而做转义:/(?=\d.*\d.*\d.*\d.*\d)(\d)/gm

    相关代码:

    https://gist.github.com/sumhat/32e6afec88a6a9a8b575
    hxsf
        6
    hxsf  
       Jan 9, 2016
    按照 @shinwood 所说从右边第五个开始枚举,是数字就替换成*,一次搞定,不用正则,自己写个函数就搞定了啊。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2795 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 11:59 · PVG 19:59 · LAX 04:59 · JFK 07:59
    ♥ Do have faith in what you're doing.