簡體   English   中英

Javascript——僅獲取正則表達式匹配的可變部分

[英]Javascript -- get only the variable part of a regex match

給定:

var regexp = new RegExp("<~~include(.*?)~~>", "g");

javascript中將變量分配給.*匹配的變量的最簡單方法是什么?

我可以這樣做,但它有點難看:

myString.match(regexp).replace("<~~include", "").replace("~~>", "");

JavaScript 應該在正則表達式匹配時返回一個數組對象,其中數組的零索引是匹配的整個字符串,以下索引是捕獲組。 在您的情況下,類似於:

var myVar = regexp.exec(myString)[1];

應將(.*?)捕獲組的值分配給myVar

(來自MDC的報價)

在正則表達式模式中包含括號會導致記住相應的子匹配。 例如, /a(b)c/匹配字符'abc'並記住'b'

.*? 是第一個(也是唯一一個)記住的匹配,在替換字符串中使用$1

var foo = myString.replace(regexp, '$1');

編輯:根據您的評論,您也可以(也許有更明確的意圖)這樣做:

var foo = regexp.exec(myString)[1];

您可以對這個正則表達式的一部分使用前瞻。 看這里:

用於提取數字的正則表達式

和/或這里:

http://www.regular-expressions.info/lookaround.html

暫無
暫無

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

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