我有一個 JS 字串,說:
var testString = "words here, svg_icon('Var-1') svg_icon('Var_2'), and even more words here";
我了解如何根據固定值匹配字串,例如,如果我想匹配svg_icon:
var testString = "words here, svg_icon('Var-1','var_3') svg_icon('Var_2'), and even more words here";
var filterMatch = /(svg_icon)/;
var results = testString.match(filterMatch);
results.forEach((result) => {
console.log(result);
})
這記錄了它找到的 2 個匹配項,我期待:
"svg_icon"
"svg_icon"
我想要做的是匹配運算式,所以我的輸出將是:
"svg_icon('Var-1','var_3')"
"svg_icon('Var_2')"
我認為這對于正則運算式是可能的,但無法找到如何處理組合條件,同時匹配可能包含特殊字符(只是破折號和下劃線)的不斷變化的“變數”名稱(例如'Var-1','var_3'和Var_2)。
關于我可以在這種情況下使用什么正則運算式的任何幫助,或者在很多條件下這實際上是否可行。
提前感謝您的任何建議!
uj5u.com熱心網友回復:
匹配(通過)后svg_icon。
您需要使用g修飾符進行多次匹配。你只是匹配第一個svg_icon- 你得到兩個輸出,因為match[0]是完全匹配,并且match[1]是捕獲組。
var testString = "words here, svg_icon('Var-1','var_3') svg_icon('Var_2'), and even more words here";
var filterMatch = /svg_icon\([^)]*\)/g;
var results = testString.match(filterMatch);
results.forEach((result) => {
console.log(result);
})
uj5u.com熱心網友回復:
這是你要找的嗎?
svg_icon\('[vV][aA][rR][\-_]\d '(?:,'[vV][aA][rR][\-_]\d ')*\)
https://regex101.com/r/WctF2Q/1
uj5u.com熱心網友回復:
將正則運算式更改為/svg_icon. ?\)/g
| 分割 | 意義 |
|---|---|
svg_icon |
匹配文字“svg_icon”... |
. |
...然后是任何字符或空格... |
|
...對于一次到無限次的事件... |
?\) |
...直到第一個右括號(用 轉義\)。 |
添加g需要使用的 lobal 標志.matchAll()(.match()在類固醇上):
var testString = "words here, svg_icon('Var-1','var_3') svg_icon('Var_2'), and even more words here";
var filterMatch = /svg_icon. ?\)/g;
var result = [...testString.matchAll(filterMatch)].flat();
console.log(`Result is an array of matches:`);
console.log(result);
console.log(`Access a single match like so:`);
console.log(`First match is: result[0]`);
console.log(result[0]);
console.log(`Second match is: result[1]`)
console.log(result[1]);
.as-console-row::after { width: 0; font-size: 0; }
.as-console-row-code { width: 100%; word-break: break-word; }
.as-console-wrapper { min-height: 100% !important; min-width: 100%; }
簽名就像,.match()但您需要將所有內容包裝到方括號[]中并使用擴展運算子...,然后使用.flat(). 結果是一個匹配陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/464797.html
標籤:javascript 正则表达式
上一篇:從JSON檔案中決議html
