RegEx从时间中提取日期

时间:2017-12-18 20:58:30

标签: regex nintex-workflow

我有以下日期&时间并希望使用RegEx将其转换为简单的数字

我有什么:2017-11-02T04:00:00Z

我想将其转换为:20171102(包括月/日的前导零)

RegEx可以实现吗?能够在使用'^(。*?) - '

工作数小时后才能获得'2017-'

似乎越来越难,任何帮助之手都非常感激

编辑:显示我在尝试此处的位置。我试图在Nintex for SharePoint上执行此操作。但在此之前,我正在使用www.regEx101.com进行验证

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:1)

^\d{4}-\d{2}-\d{2}怎么样?

这将恰好匹配四位数字,后跟一个连字符,后跟2位数字,后跟另一个连字符,后跟另外2位数字。



var str = "2017-11-02T04:00:00Z";
var res = str.match(/^\d{4}-\d{2}-\d{2}/)[0];
console.log(res);




答案 1 :(得分:1)

将以下正则表达式与替换模板一起使用:

^(\d{4})-(\d{2})-(\d{2}).*

并提供

$1$2$3

作为替代模式。

<强>详情

  • ^ - 字符串开头
  • (\d{4}) - 第1组(后来引用替换模式的$1反向引用):四位数
  • - - 连字符
  • (\d{2}) - 第1组(后来引用替换模式的$2反向引用):两位数
  • - - 连字符
  • (\d{2}) - 第3组(后来引用替换模式的$3反向引用):两位数
  • .* - 字符串的其余部分。

请参阅regex demo

enter image description here

答案 2 :(得分:0)

无法从正则表达式中的匹配组中排除字符,因此您必须使用三个匹配组。我使用命令行sed来试验正则表达式。这是一些显示我的意思的输出:

$ echo '2017-11-02T04:00:00Z'|sed 's/^\([0-9]*\)-\([0-9]*\)-\([0-9]*\)T.*$/\1\2\3/'
20171102

此命令匹配单独捕获组中任意长度数字的每个序列,然后用三个组替换整个字符串。您的语言如何实现此功能会有所不同。

相关问题