簡體   English   中英

如何從字符串開頭獲取與RegEx的匹配

[英]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的示例是:

  • random_numbers = 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”,還有很多其他的,但是都是徒勞的。 我猜第二部分不起作用,因為該情節與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM