js正则表达式

我想把3011转成3.0.11,即最后2位合成一位

'3011'.replace(/(\d{1})/g,'$1.').replace(/\.$/,'')

可以转成3.0.1.1

但是这种写法为什么得不到想要3.0.11

'3011'.replace(/(\d{1})(\d{2})$/g,'$1.$2')

得到的是30.11为什么这种写法得不到3.0.11,想要得到这种写法改怎改?

阅读 2.6k
4 个回答

思路:替换所有的数字为数字+.,但数字后必须至少还有两个数字

str.replace(/(\d)(?=\d{2})/g,'$1.')
'3011'.replace(/(\d)(\d)(\d{2})$/g,'$1.$2.$3')
//"3.0.11"
'9873011'.split('').join('.').replace(/\.(?=\d$)/,'')
//"9.8.7.3.0.11"

正则不熟练,用的笨办法。

let str = '123456789'
str.substring(0,str.length-2).replace(/(\d{1})/g,'$1.')+str.substring(str.length-2)
//1.2.3.4.5.6.7.89
var str = '301126562654';
    str.replace(/\d/g, function (i, j) {
        if (j >= str.length - 2) {
            return i
        } else {
            return i + '.'
        }

    })
    
    var str = '301126562654';
    str.replace(/\d/g,  (i, j)=> j>=str.length-2?i:i+'.')
    
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题