javascript最短正则表达式格式化帐号

标签 javascript regex

问题: 在我的数据库中,我以以下形式保存了一些帐号:

PL83102044760000870200961284

现在我必须将其格式化为这样:

PL 83 1020 4476 0000 8702 0096 1284

我编写了简单的 js 正则表达式来完成这项工作:

account.replace(/(\w{2})(\d{2})(\d{4})(\d{4})(\d{4})(\d{4})(\d{4})(\d{4})/g, '$1 $2 $3 $4 $5 $6 $7 $8');

但我认为这在某种程度上是幼稚的解决方案,并且可以重构此代码以避免重复。有人能把这个缩短吗?

最佳答案

类似的东西

"PL83102044760000870200961284".match(/.{4}/g).join(" ")

也许?

没有注意到“PL 83”的第一个要求

account.match(/.{4}/g).map(function(n){ return /([A-Z]{2})(\d{2})/.test(n) ? RegExp.$1 + " " + RegExp.$2 : n; }).join(" ");

说实话,我很想手动修复第一位而不是 map ,或者我确信有一种聪明的方法可以使用匹配来完成这两者......

这也有效

account.match(/[A-Z]{2}|(?:(?:\d{2}|\d{4})(?=(\d{4})*$))/g).join(" ")

关于javascript最短正则表达式格式化帐号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9821113/

相关文章:

javascript - 单击按钮时隐藏 JQuery css

javascript - 为 google-code-prettify 编译正则表达式

java - 在java反斜杠和quate中用正则表达式否定和替换字符串

javascript - 使用 IE 时 Jquery 出现第 3539 行错误

javascript - 为什么 !== ""不等于 !== null

javascript - 当您向下滚动时,顶部的菜单栏(Div 元素)仍然保留

javascript - 如何访问对象数组的属性

regex - 生成具有死或多余状态的 DFA 的正则表达式

regex - 正则表达式中的命名捕获

php - 为什么我的正则表达式删除空格?