[英]How can I get one match with RegEx from start of string
我有两个字符串,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”,还有很多其他的,但是都是徒劳的。 我猜第二部分不起作用,因为该情节与series_CRID的结尾相同,为3132。 请帮忙。
另外,这是我的第一篇文章,请保持温柔。
奖励问题:为什么必须在\\ 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的正斜杠部分。
你可以试试:
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, "");
如果定义了第一位数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.