我是regex的新手,并且整夜都在研究如何从“08/08/2017”中删除前两个零(在“2017”中不删除0)
我所评论的5+正则表达式教程似乎没有涵盖我需要的内容。
日期可以是从系统返回的任何sysdate。所以正则表达式也需要为“12/12/2017”工作
这是我提出的最好的:
let sysdate = "08/08/2017"
let todayminuszero = str.replace("0","");
let today = todayminus0.replace("0","");
它有效,但显然它不专业。
从教程中,我很确定我可以做到这一点: str.replace(/ \ d {2} //克, “”)); 这种模式将避免在str中获得第3个零。 替换字符串必须表示8/8 / 不知道怎么写这个。
答案 0 :(得分:3)
对于日期操作,我会使用其他功能(最佳日期相关),但是,对于你说的情况,这应该这样做。如果您需要其他格式,我建议您以不同的方式删除零,但这一切都取决于您的UseCase。
let sysdate = "08/08/2017";
let todayminuszero = sysdate.replace(/0(?=\d\/)/gi,"");
console.info(todayminuszero);
(?= ...)被称为Lookahead,你可以看到它是什么,而不是替换它 在这种情况下,我们正在检查数字和斜线。
(?=\d\/)
这里有更多信息,如果你想了解前瞻和更多 http://www.regular-expressions.info/lookaround.html
测试正则表达式的好地方是 https://regex101.com/ 我总是将它用于更高级的表达式,因为它显示所有匹配的组,因此,有一个很好的解释。如果您正在学习或创建困难的表达式,那就是很好的资源/帮助。
Rajesh提到的信息,此表达式不需要
i
标志,我只是出于个人喜好而使用它。此标志仅将表达式匹配设置为不区分大小写。
- 超出范围,但可能很有趣 -
没有正则表达式的更长解决方案可能如下所示:
let sysdate = "08/08/2017";
let todayminuszero = sysdate.split("/").map(x => parseInt(x)).join("/");
console.info(todayminuszero);
背面,这个解决方案有很多移动部件,split
函数来制作一个数组('“08/08/2017”'到'[“08”,“08”,“2017”]') ,map
函数,使用lambda函数=>
和parseInt
函数,使每个字符串项成为一个很好的整数(如:"08"
到{{1} },...)最后是8
函数,用于从新创建的整数数组中创建最终字符串。
答案 1 :(得分:0)
你应该使用这个
let sysdate = "08/08/2017"
let todayminuszero = sysdate.replace(/(^|\/)0/g,"$1");
console.log(todayminuszero);

答案 2 :(得分:0)
function stripLeadingZerosDate(dateStr){
return dateStr.split('/').reduce(function(date, datePart){
return date += parseInt(datePart) + '/'
}, '').slice(0, -1);
}
console.log(stripLeadingZerosDate('01/02/2016'));
console.log(stripLeadingZerosDate('2016/02/01'));
看这里
function stripLeadingZerosDate(dateStr){
return dateStr.split('/').reduce(function(date, datePart){
return date += parseInt(datePart) + '/'
}, '').slice(0, -1);
}
console.log(stripLeadingZerosDate('01/02/2016'));// 1/2/2016
console.log(stripLeadingZerosDate('2016/02/01'));// "2016/2/1"
答案 3 :(得分:-1)
通过前2个零,我知道你在月份和日期8
之前的意思是零。
您可以尝试这样的事情:
var sysdate = "08/08/2017"
var numRegex = /(\d)+/g;
var result = sysdate.replace(numRegex, function(match){
return parseInt(match)
});
console.log(result)