Regex会捕获字符串的开头和结尾吗?

时间:2017-08-02 13:53:05

标签: javascript regex typescript

我正在尝试在typescript文件中编辑DateTime字符串。 有问题的字符串是02T13:18:43.000Z。 我想修剪前三个字符,包括字符串开头的字母T和字符串末尾的所有5个字符,即Z000.,包括点字符。 Essentialy我希望结果如下所示:13:18:43

从我发现以下模式(^(.*?)T)只能完成我需要的修剪的第一部分,这样就得到了初始结果:13:18:43.000Z。 我必须使用什么样的正则表达式模式来包含我提到的修剪的第二部分?我试图以相同的模式(Z000.)$包含以下块,但当然它失败了。 谢谢。 任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:0)

解决方案

这应该足以将前缀从开头awk和后缀从T删除到结尾:

.

/^.*T|\..*$/g

查看debuggex

上的可视化效果

解释

console.log(new Date().toISOString().replace(/^.*T|\..*$/g, ''))部分删除字符串中最后遇到^.*T的所有字符。

T部分会删除第一个遇到\..*$到字符串末尾的所有字符。

中间的.与全局|标志相结合,允许正则表达式匹配字符串中的两个部分,允许g同时修剪两者。

答案 1 :(得分:0)

因为我认为你只需要正则表达式解决方案所以这种模式有用吗?

(\d{2}:)+\d{2}或只是\d{2}:\d{2}:\d{2}

最后搜索数字 - 数字 - 双点组合和数字 - 数字 - 双点最后

唯一不利的是,它没有检查是否说没有分钟> 59等等。

我之所以不包括检查的主要原因只是因为我记得你从存储的数据已经有效的来源获取日期,例如。数据库中。

答案 2 :(得分:0)

没有必要使用正则表达式来实现这一点。你可以简单地使用:

let value = '02T13:18:43.000Z';
let newValue = value.slice(3, -5);
console.log(newValue);

它将返回13:18:43,假设你的字符串将始终具有相同的模式。根据{{​​3}}切片方法将substring从beginIndex转换为endIndex。 endIndex是可选的。