我正在尝试实现一个自动格式化器JS,这样如果我有一个给定的值(例如12345678)并且我有一个给定的格式(例如XX.XX.XXOR XX-XX-XXOR XX/XX/XXOR XXX-XXXX),我可以将我的初始值自动格式化为任何给定的格式.
所需的格式会有所不同,因此需要能够采用任何给定的格式并重新格式化原始值以匹配.
我不知道它是否可能或如何去做.任何帮助赞赏.
谢谢,
克拉拉
这应该为你工作
var value = '12345678';
// 12345678 => 12.34.56.78
console.log(value.replace(/(\d{2})(?=\d)/g, '$1.'));
// 12345678 => 12/34/56/78
console.log(value.replace(/(\d{2})(?=\d)/g, '$1/'));
// 12345678 => 12-34-56-78
console.log(value.replace(/(\d{2})(?=\d)/g, '$1-'));
// 12345678 => 1234-5678
console.log(value.replace(/(\d{4})(?=\d)/g, '$1-'));
// a more complex format (create US phone number)
// 1234567890 => +1 (123)-456-7890
console.log('1234567890'.replace(/^(\d{3})(\d{3})(\d{4})$/g, '+1 ($1)-$2-$3'));
Run Code Online (Sandbox Code Playgroud)
像这样的东西?
function format(mask, number) {
var s = ''+number, r = '';
for (var im=0, is = 0; im<mask.length && is<s.length; im++) {
r += mask.charAt(im)=='X' ? s.charAt(is++) : mask.charAt(im);
}
return r;
}
console.log(format('XX.XX.XX', 12345678)); // logs "12.34.56"
console.log(format('XXX-XXXX', 12345678)); // logs "123-4567"
console.log(format('XX-XX-XX', 12345678)); // logs "12-34-56 "
console.log(format('XX/XX/XX', 12345678)); // logs "12/34/56"
console.log(format('XX/XX/XX/XX/XX', 12345678)); // logs "12/34/56/78"
Run Code Online (Sandbox Code Playgroud)
在编写此代码时,没有正则表达式引擎受到损害.