Regexp只匹配字符串中出现n个字符



我有一个类似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教程

p>正如scibuff所建议的那样,在Ruby中,最好不要使用Regexps。
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(/:/,'-')

相关内容

  • 没有找到相关文章

最新更新