【发布时间】:2019-06-14 19:15:30
【问题描述】:
需要使用 String.match 创建一个正则表达式模式,该模式将在 : 符号之前或之后返回唯一数字。它应该只返回数字,而不是 : 符号。 PS:我知道还有其他(可能更简单)的方法可以做到这一点,但我想使用正则表达式进行学习
let s;
let regex = /(^\d:)(:\d$)/g // I tried this, off course it didn't work
s = '12:34'
s.match(regex) // return null
s = '1:34'
s.match(regex) // return [1]
s = '12:4'
s.match(regex) // return [4]
s = '1:4'
s.match(regex) // return [1,4]
【问题讨论】:
-
/^(\d+):(\d+)$/。没有指向g,你正在匹配整个文本 -
这只是两个捕获组,中间有:....
-
我知道它们可能不是真实的例子,但以防万一,您也可以使用
.split(':')获得相同的结果。 -
看来
let regex = /\b\d\b/g也适合你。符合 ES5,无环顾。 -
@WiktorStribiżew 我相信这会错误地匹配“2 3”,而不是“12:34”
标签: javascript regex match