我想编写一个简单的函数来掩盖日期为12-2018(MM-YYYY)的输入,并使用如下所示的正则表达式,但是它返回的数字是每2位带一个斜杠。但是我只在前两位数字后加斜杠。我搜索了很多东西,但只得到了提示。
("122018").match(new RegExp('.{1,2}', 'g')).join("-")
("122018").match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
答案 0 :(得分:0)
您的正则表达式应仅在花括号中指定确切的字符数。更换时请参考捕获组。
使用'-?'要么 '。?'允许使用可选的(破折号或任何)定界符。如果不想使用分隔符,也可以将其删除。
您可能还希望在输入内容周围留有可选空格...
let inputValues = ['122018', '12-2018', '2018']
let res = rx = /(\d{2})(\d{4})/
//let res = rx = /(\d{2})-?(\d{4})/
inputValues.forEach(inputValue => {
let m = res.exec(inputValue)
if (m) {
console.warn('good input: ' + inputValue)
//console.log(m[1] + '/' + m[2])
} else {
console.warn('bad input: ' + inputValue)
}
})
答案 1 :(得分:0)
date = '122018';
arr = date.match(/^(..)(.+)$/);
res = [arr[1],arr[2]].join('-');
console.log(res);