繁体   English   中英

正则表达式拆分可选组

[英]Regular expression splitting a optional group

我试图在JavaScript中设置一个正则表达式,该表达式可以接受12:13:14.15类的字符串(最大),但是仅执行12:13 ,它将把第一个匹配项(12)拆分为两个匹配项。

我已经来了一段时间,我不知道是什么原因造成的。

这是我正在使用的表达式:

^(\d+)?:?(\d+):(\d+).?(\d+)?$

根据我的尝试,应该这样设置:

  • (XX:)XX:XX(.XX) ,其中()是可选的。

正如我上面提到的,将整个内容填写完整,所有内容都进入各自的匹配项。 但是如果忽略了第一个可选部分,则会导致将第一个匹配项拆分为两个匹配项。


例如:

完整的字符串是54:13.15 它将把54分为5场比赛和4场比赛。 我希望它做的是分裂541315成组。 它应该由每一个分裂:.

请注意,此示例没有可选部分。 包括可选部分,它将正确分割。

我还需要使用正则表达式,因为我需要限制它可以执行的拆分次数。 我不希望它可以有多个. 分裂或类似10 :分裂。

感谢您提供任何帮助!

我认为您正在使这一过程变得比所需的复杂。 您可以匹配要分割的定界符。 您无需捕获其余部分。 前例:

 let st = '54:13.15' // split on : and . console.log(st.split(/[:.]/)) st = '12:13:14.15' console.log(st.split(/[:.]/)) st = '12:13:14' console.log(st.split(/[:.]/)) 

您可以使用正则表达式:

^(\\ d +):?(\\ d +):???(\\ d +)(\\ d +)$

 var timestamp = '12:13:14.15' var re = /^(\\d+)?:?(\\d+)?:(\\d+)\\.?(\\d+)?$/g matches = re.exec(timestamp) ms = matches[4] console.log(ms) var timestamp = '54:13.20' var re = /^(\\d+)?:?(\\d+)?:(\\d+)\\.?(\\d+)?$/g matches = re.exec(timestamp) ms = matches[4] console.log(ms) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM