我有一个类似2005:10:29 12:23:53
的字符串,我只想用-
替换前两次出现的:
预期结果2005-10-29 12:23:53
编辑:
我在KDE的krename
工具中需要这个regexp,在那里我不能编辑/格式化原始的[exifExif.Image.DateTime]
开关返回不需要的2005:10:29 12:23:53
格式,但有一个Find and Replace
来后处理字符串
(?<=d{4}):|:(?=d{2}s)
在rubular上完成工作,但在KDE:(
我相信还有更多的解决方案。
编辑:
:(?=d{2}:d{2}s)|:(?=d{2}s)
甚至适用于KDE
我在阅读后找到了这个解决方案
You can use a full-fledged regular expression inside the lookahead.
Most regular expression engines only allow literal characters and
alternation inside lookbehind, since they cannot apply regular
expression backwards.
在Regex教程
require 'date'
date = DateTime.parse("2005:10:29 12:23:53", "%Y:%m:%d %H:%M:%S")
date.strftime("%Y-%m-%d %H:%M:%S")
JavaScript:
版本1
str = str.split(' ')[0].replace(/:/g,'-')+' '+str.split(' ')[1]
版本2
str = str.replace(/(d{4}):(d{2}):(d{2})(.*)/,"$1-$2-$3 $4")
演示
再次使用正则表达式,以更简单、更优雅、更高效的方式实现
var date = new Date('2005:10:29 12:23:53');
则相应地格式化date
,例如
function formatDate( date ){
return date.getFullYear() + '-' + ( get.getMonth() + 1 ) + '-' + ... ;
}
只需调用replace()
两次:
"2005:10:29 12:23:53".replace(/:/,'-').replace(/:/,'-')