我想在每两个字符后插入一个斜杠,但只是前两个实例。每次出现后都会插入以下正则表达式。有谁知道如何限制它出现两次?用户将通过输入元素输入金额。因此,如果用户输入30032017
,则会出现如下情况。
function insertSlash(val) {
return val.match(new RegExp('.{1,2}', 'g')).join("/");
}
insertSlash(input);
因此对于第一个字符,用户将输入3
。在下一个输入中,它将是0
。然后应该插入一个斜杠。
然后应该返回30/03/2017
。
答案 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)
如果您想将日期字符串视为实际日期,则可以执行以下操作:
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;
如果您愿意,这将允许您进行任何中间日期操作(添加/减去天/月/年)。