gpt4 book ai didi

javascript - 如何从字符串开头获得与 RegEx 的匹配

转载 作者:行者123 更新时间:2023-12-03 07:38:53 30 4
gpt4 key购买 nike

我有两个字符串,program_CRID:“3333313231323132”和series_CRID:“31323132”。

program_CRID由三段组成,如下“random_numbers”+“series_CRID”+“episode”。对于上面的program_CRID 示例,它是:

  • 随机数 = 3333
  • series_CRID = 31323132
  • 剧集 = 3132

所以,我想从program_CRID中减去random_numbers和series_CRID,只保留剧集。请注意,3 个片段的长度各不相同。

// this snippet is working
var program_CRID = "3333373638353131";
var series_CRID = "3337363835";
var regex = new RegExp("\\d*" + series_CRID, "g");
var episode = program_CRID.replace(regex, "");
// result is 3131

// this one is not working
var program_CRID = "3333313231323132";
var series_CRID = "31323132";
var regex = new RegExp("\\d*" + series_CRID, "g");
var episode = program_CRID.replace(regex, "");
// result is null but should be 3132 (last four numbers of program_CRID)

我尝试在正则表达式的开头添加一个 ^ 并在结尾添加一个 $ 但没有成功。我尝试过删除“g”,还有很多其他的,但都是徒劳。我猜第二部分不起作用,因为该集的第 3132 集与系列_CRID 的结尾相同。请帮忙。

此外,这是我的第一篇文章,所以请保持温柔。

额外问题:为什么我必须在\d* 前面添加一个额外的\才能使其正常工作?根据我读过的文档\d* 应该足够了。提前致谢。

最佳答案

试试这个:

program_CRID = "3333313231323132"; var series_CRID = "31323132"; 
var regex = new RegExp("\\d*" + series_CRID + "(?!$)");
var episode = program_CRID.replace(regex, "");

额外的 (?!$) 将确保匹配模式不会位于字符串的末尾,因此 series_crid 后面的重复字符串将不会被匹配。

此外,您还可以添加额外的正斜杠来转义数字选择器\d 的正斜杠部分。

关于javascript - 如何从字符串开头获得与 RegEx 的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35494610/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com