输入掩码数集拆分长度

Splitting length of input mask number sets

我如何在这里以不同方式拆分数字,例如 XXX-XXX-XXXX?

String.prototype.toCardFormat = function () {
    return this.replace(/[^0-9]/g, "").substr(0, 16).split("").reduce(cardFormat, "");
    function cardFormat(str, l, i) {
        return str + ((!i || (i % 4)) ? "" : "-") + l;
    }
};

jsfiddle

您将更改附加 - 的条件。上面,是每 4 个字符。在这里,在第3和第6之后:

String.prototype.toCardFormat = function() {
  return this.
    replace(/[^0-9]/g, "").
    substr(0, 16).
    split("").
    reduce(cardFormat, "");

  function cardFormat(str, l, i) {
    return str + 
           (((i == 3) || (i == 6)) ? "-" : "") + 
           l;
  }
};

var st = "1234567890";

console.log(st.toCardFormat());

这里是 link 更新 fiddle。为您的函数添加 OR 条件。

 function cardFormat(str, l, i) {
    return str + ((!i || (i % 3) || i > 8) ? "" : "-") + l;
 }