我尝试在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 :
拆分。
对此有任何帮助!
答案 0 :(得分:2)
我认为您正在使这一过程变得比它需要的复杂。您可以匹配要分割的定界符。您无需捕获其余部分。例如:
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(/[:.]/))
答案 1 :(得分:1)
您可以使用正则表达式:
^(\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)