簡體   English   中英

提取兩個模式之間的數字javascript

[英]Extract numbers between two patterns javascript

我正在嘗試從網址中提取一組數字。 字符串在單詞“ region”和單詞“ all”之間。 網址是: http//my.site.com/theme/feature/region/227-84/all/country-south

我建立的正則表達式是:

var tmp = $(this).attr('link').match("(?=region/).*?(?=/all)");

正則表達式正在提取數字的正確部分,但始終將區域粘貼到數字上,因此提取的字符串變為:

"region/227-84"

雖然我只想得到數字:

"227-84" 

它包含子字符串“ region /”,因為正向向前(?=region\\/)與“ region /” 之前的字符匹配。 由於JavaScript沒有后顧之憂,所以最簡單的選擇是刪除前瞻並使用捕獲組來提取中間部分:

/region\/([^\/]*)\/all/

或模式之間是否有斜線:

/region\/(.*?)\/all/

用法:

var match = $(this).attr('link').match(/region\/([^\/]*)\/all/);
var result = match ? match[1] : null;

console.log(result); // "227-84"

如果存在匹配項,則.match()方法將返回一個數組。 在這種情況下,它將返回:

["region/227-84/all", "227-84"] // match

第一個捕獲組的索引為1(即match ? match[1] : null )。 在這種情況下,三元運算符僅用於在訪問數組之前檢查是否確實存在匹配項(否則,如果沒有匹配項,則會引發錯誤)。

如果您已經知道要查找的字符串的大小,則可以執行以下操作:

......(?=\/all)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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