我有两个字符串,program_CRID:" 3333313231323132"和series_CRID:" 31323132"。
program_CRID由以下三段构成:" random_numbers" +" series_CRID" +" episode"。对于上面的program_CRID示例,它是:
所以,我想从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,与series_CRID的结尾相同。请帮忙。
另外,这是我的第一篇文章,所以请保持温和。
奖金问题:为什么我必须在\ d *前添加一个额外的\才能使其正常工作?根据文献记载,我读过\ d *应该就够了。提前谢谢。
答案 0 :(得分:1)
试试这个:
program_CRID = "3333313231323132"; var series_CRID = "31323132";
var regex = new RegExp("\\d*" + series_CRID + "(?!$)");
var episode = program_CRID.replace(regex, "");
额外的(?!$)将确保匹配模式不会在字符串的末尾,因此不会匹配在series_crid后面的重复字符串。
此外,您还可以使用额外的正斜杠来转义数字选择器的正斜杠部分\ d。
答案 1 :(得分:0)
您可以尝试:
var program_CRID = "3333313231323132";
var series_CRID = "31323132";
var regex = new RegExp("(?!\d*" + series_CRID + ")");
var episode = program_CRID.replace(regex, "");
或
var program_CRID = "3333313231323132";
var series_CRID = "31323132";
var regex = new RegExp("\\d{4}" + series_CRID, "g");
var episode = program_CRID.replace(regex, "");
如果定义了第一个数字的数字。