[英]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
场比赛。 我希望它做的是分裂54
, 13
, 15
成组。 它应该由每一个分裂:
和.
。
请注意,此示例没有可选部分。 包括可选部分,它将正确分割。
我还需要使用正则表达式,因为我需要限制它可以执行的拆分次数。 我不希望它可以有多个.
分裂或类似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.