Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript只在正则表达式中获取匹配的文本_Javascript - Fatal编程技术网

Javascript只在正则表达式中获取匹配的文本

Javascript只在正则表达式中获取匹配的文本,javascript,Javascript,我有下面这样的绳子 BANKNIFTY-13-FEB-2020-31200-ce 我想将字符串转换为13-FEB-31200-ce 所以我尝试了下面的代码 str.match(/(.*)-(?:.*)-(?:.*)-(.*)-(?:.*)-(?:.*)/g) 但是它返回整个字符串通过使用正则表达式捕获组,您可以得到如下结果: const regex=/(\d{2}-\w{3})(\-\d{4})(\-\d{5}-\w{2})/ const text=“BANKNIFTY-13-FEB-2

我有下面这样的绳子

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

所以我尝试了下面的代码

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

但是它返回整个字符串

通过使用正则表达式捕获组,您可以得到如下结果:

const regex=/(\d{2}-\w{3})(\-\d{4})(\-\d{5}-\w{2})/
const text=“BANKNIFTY-13-FEB-2020-31200-ce”
常量[,a,b,c]=文本匹配(regex);

log(`${a}${c}`)
两个捕获组可能是最好的选择。现在您有两个选项可以使用它。一种是火柴,它要求你把两块放在一起

var str='BANKNIFTY-13-FEB-2020-31200-ce'
var match=str.match(/[^-]+-(\d{2}-[A-Z]{3}-)\d{4}-(.*)/)
//只参考这两组
log(`${match[1]}${match[2]}`)
//或者,您可以删除匹配项并加入剩余的
match.shift()

console.log(match.join(“”))
如果您知道确切的位置,我根本不会使用正则表达式。使用正则表达式是昂贵的,如果有办法的话,应该采取不同的方法。()


正则表达式似乎不是这里最合适的工具。为什么不使用simple
.split

let str='BANKNIFTY-13-FEB-2020-31200-ce';
设splits=str.split('-');
释放=[splits[1]、splits[2]、splits[4]、splits[5]]。连接('-');

控制台。注销如果模式不需要太具体。
然后保持简单,只捕获需要的内容。
然后将捕获的组粘在一起

let str='BANKNIFTY-13-FEB-2020-31200-ce';
设m=str.match(/^\w+-(\d{1,2}-[A-Z]{3})-\d+-(.*)$/)
让结果=m?m[1]+'-'+m[2]:未定义;

控制台日志(结果)你可以看到,我甚至删除了2020。你不需要使用捕获组来处理你不关心的事情。并且去掉/g标志。
-2020
不应该在其中OP还需要删除“2020”。哦!真的,不,嗯。可以谢谢你的评论。
const strArr = "BANKNIFTY-13-FEB-2020-31200-ce".split("-"); // creates array
strArr.splice(0,1); // remove first item
strArr.splice(2,1); // remove 2020
const finalStr = strArr.join("-");