[英]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.