Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex从时间字符串中删除秒_Regex - Fatal编程技术网

Regex从时间字符串中删除秒

Regex从时间字符串中删除秒,regex,Regex,我想删除时间字符串中的秒,格式是HH:MM:SS,可能是空格,最后是“am/pm” For example: 11:34:41 pm to 11:34pm For example: 11:34:41pm to 11:34pm For example: 11:34:41 to 11:34 我试过很多正则表达式,但都不起作用 如何做到这一点?您可以使用以下方法: /:\d\d([ ap]|$)/ 这样做的目的是匹配:\d\d,当它后跟字符串结尾或空格时 您可以在浏览器中测试它,方法是在控制台中键

我想删除时间字符串中的秒,格式是HH:MM:SS,可能是空格,最后是“am/pm”

For example: 11:34:41 pm to 11:34pm
For example: 11:34:41pm to 11:34pm
For example: 11:34:41 to 11:34
我试过很多正则表达式,但都不起作用

如何做到这一点?

您可以使用以下方法:

/:\d\d([ ap]|$)/
这样做的目的是匹配
:\d\d
,当它后跟字符串结尾或空格时

您可以在浏览器中测试它,方法是在控制台中键入:

'11:34:41'.replace(/:\d\d([ ap]|$)/,'$1')

'11:34:41 pm'.replace(/:\d\d([ ap]|$)/,'$1')

'11:34:41pm'.replace(/:\d\d([ ap]|$)/,'$1')

这将匹配2个数字,后跟冒号,后跟2个数字:

\d{2}:\d{2}
这对你来说已经足够好了。但是,如果您还希望匹配可能的秒数和/或
am
/
pm
,但不捕获它们,请使用此选项:

(\d{2}:\d{2})(?::\d{2})?(?:am|pm)?
  • (\d{2}:\d{2})
    将执行与第一个正则表达式相同的匹配并捕获结果
  • (?:\d{2})
    将匹配秒数(如果存在)
  • (?:am | pm)
    将匹配
    am
    pm
    (如果存在)

此问题与主题无关,因为问题必须证明对所解决问题的理解程度最低。告诉我们你试过做什么,为什么不起作用,以及它应该如何起作用。另见:你用的是什么语言?我不明白这里的投票结果。我们希望现在每个人都知道如何解决这个问题吗?这里的一些失败的正则表达式不会使问题变得更好。@dystroy如果是对我来说,可能一半的正则表达式问题应该关闭。没有代码,没有努力,只给我代码。我们需要更多关于这个问题的信息。什么语言?你试过的正则表达式是什么?最终,背景是什么?(XY问题)当这些问题得到回答时,我将很高兴地投下重新开放的一票。