我正在嘗試創建一個正則運算式來捕獲限定符的值:值對,類似于它在GitHub 搜索中的完成方式
舉個例子:
project name: foo/bar, foo/bar; status: online, offline; user: test location: Spain, Italy
分號或空格可用于分隔每一qualifier:value
對。
此外,每個值可以有多個用逗號分隔的引數:
status: online, offline
目標是獲取特定限定符的具體值。
我目前的解決方案如下:
function getMatch(qualifier, string) {
var formattedStr = string.replace(/ \/ | \/|\/ /g, "/");
const regex = new RegExp(`${qualifier}:[\\s]?([,/A-Za-z0-9_-]*)[;\\s]?`, "g");
var match = (formattedStr.match(regex) || []).map((e) =>
e.replace(regex, "$1")
);
console.log(match)
}
但是,如果該值包含多個以逗號分隔的引數,它將僅捕獲第一次出現:
因為status: online, offline
它只會捕獲價值online
。
uj5u.com熱心網友回復:
您在此處的字符類中缺少空格字符:[,/A-Za-z0-9_-]
此外,您可以通過使用字母通配符\w
而不是位來改善生活A-Za-z0-9
。
這是我的調整版本: https ://regexr.com/6ok61
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/496446.html
標籤:javascript 正则表达式