首页 > 解决方案 > Javascript仅在正则表达式中获取匹配的文本

问题描述

我有如下字符串

BANKNIFTY-13-FEB-2020-31200-ce

我想将字符串转换为13-FEB-31200-ce

所以我尝试了下面的代码

str.match(/(.*)-(?:.*)-(?:.*)-(.*)-(?:.*)-(?:.*)/g)

但它返回整个字符串

标签: javascript

解决方案


两个捕获组可能是要走的路。现在您有两个选择来使用它。一种是匹配,需要您将两部分放在一起

var str = 'BANKNIFTY-13-FEB-2020-31200-ce'
var match = str.match(/[^-]+-(\d{2}-[A-Z]{3}-)\d{4}-(.*)/)

// just reference the two groups
console.log(`${match[1]}${match[2]}`)

// or you can remove the match and join the remaining
match.shift()
console.log(match.join(''))

或者只是字符串替换,您将两个捕获组连接在一行中。

var str = 'BANKNIFTY-13-FEB-2020-31200-ce'
var match = str.replace(/[^-]+-(\d{2}-[A-Z]{3}-)\d{4}-(.*)/, '$1$2')
console.log(match)


推荐阅读