如何在每2个字符后插入一个字符?

时间:2017-03-30 15:17:27

标签: javascript regex

我想在每两个字符后插入一个斜杠,但只是前两个实例。每次出现后都会插入以下正则表达式。有谁知道如何限制它出现两次?用户将通过输入元素输入金额。因此,如果用户输入30032017,则会出现如下情况。

function insertSlash(val) {
    return val.match(new RegExp('.{1,2}', 'g')).join("/");
}

insertSlash(input);

因此对于第一个字符,用户将输入3。在下一个输入中,它将是0。然后应该插入一个斜杠。

然后应该返回30/03/2017

5 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点,你可以使用仅为这种类型的字符串格式化的正则表达式

function insertSlash(val) {
  return val.replace(/^(\d{2})(\d{2})/, '$1/$2/');
}

console.log(insertSlash('30032017'));

或者您可以使用简单的替换功能来跟踪替换计数

function insertSlash(val) {
  var count = 2;
  var i = 0;
  return val.replace(/(\d{2})/g, function(match, capture) {
    return (i++ < count) ? capture + '/' : capture;
  });
}

console.log(insertSlash('30032017'));

修改

看起来您已经编辑了您的问题,以便在用户输入时包含这种情况。有这样的掩码插件,考虑到插入符号,占位符信息,它可能值得你花时间检查其中一些。这是one that I found,它有一个反应JS 组件。我不能保证它,我从来没有使用它,但它是一个想看的东西的想法。

答案 1 :(得分:0)

忽略它可能不匹配,

"30032017".match(new RegExp("(..)(..)(....)")).slice(1).join("/")

匹配返回的值是匹配组数组。第一个元素将具有整个匹配的字符串,因此需要将其切片以便我们可以加入。

答案 2 :(得分:0)

如果在知道特定字符位置时切割字符串会更容易:

return val.slice(0, 2) + "/" + val.slice(2, 4) + "/" + val.slice(4)

答案 3 :(得分:0)

function insertSlash(val) {
    return val.substr(0,2)+"/"+val.substr(2,2)+"/"+val.substr(4,4)
}

insertSlash('30032017');

答案 4 :(得分:0)

如果您想将日期字符串视为实际日期,则可以执行以下操作:

&#13;
&#13;
const dateString = "30032017"
const date = new Date(dateString.slice(4), dateString.slice(3,4), dateString.slice(0,2))

const formattedDateString = date.getUTCFullYear() +"/"+ date.getUTCMonth() +"/"+ date.getUTCDate()

console.log(formattedDateString)
&#13;
&#13;
&#13;

如果您愿意,这将允许您进行任何中间日期操作(添加/减去天/月/年)。