求每输入五个字符自动用‘-’隔开的正则表达式

input里面可以输入或者粘贴文本,里面的文本只能是[a-zA-Z0-9],每输入5个字符,自动加入'-',正则表达式如何表示呀

阅读 4k
5 个回答

你们搞得太复杂了吧,还有个条件是字符输入的限定。。。

'input里面可以输入或者粘贴文本aaaBBB2222'.replace(/[^\d|^a-z|^A-Z]/g, '').replace(/(.{5,5})/g, '$1-')

搞了个demo
https://jsfiddle.net/szco1kyz/

想多了,把简单问题搞复杂~

"1234567890abcDEFg".replace(/([^_\W]{5})/g,"$1-")
//"12345-67890-abcDE-Fg"
'1234567890abcd'.replace(/\w(?=(\w{5})+$)/g, "$&-");//"1234-56789-0abcd"

var txt=document.getElementById("txt");

        txt.oninput=function(){
            var val=txt.value;
            var len=val.length;
            if(len%5==0){
                txt.value=val+"-";
            }
        }
}

这个用正则不好实现,可以写一个函数来做这个事情

比如:

function insertSplit(str, split) {
    split = split || '-';
    var strList = str.split('');
    var result = [];
    strList.forEach(function(item, index) {
        result.push(item);
        if ((index + 1) % 5 === 0) {
            result.push('-');
        }
    });

    return result.join('');
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题