我需要創建一個 RegExp,它允許我使用組來正確決議字串以進行一些比較邏輯。
考慮以下字串串列:
const testSet: string[] = [
"alpha-4181a",
"alpha-4181a-2",
"alpha-4181a_3",
"example",
"smokeTest"
]
請注意-2和_3是此命名約定中的有效版本控制方法。我們希望繼續支持這種做法。
如果我們遍歷上面的集合,我期待整個字串,如果它存在則沒有版本控制(如下所示)......
const returnSet: string[] = [
"alpha-4181a",
"alpha-4181a",
"alpha-4181a",
"example",
"smokeTest"
]
到目前為止,我有以下正則運算式
/([-_]\d?)$/gi
可以正確識別字串末尾的版本控制。從這里開始,我想創建一個額外的組來匹配所有不是版本控制約定的內容,但我似乎無法弄清楚......
uj5u.com熱心網友回復:
您只需要在最后的版本控制之前匹配所有內容。但是您還需要惰性匹配,這就是 ?- 更多資訊請參見這個問題。
const testSet = [
"alpha-4181a",
"alpha-4181a-2",
"alpha-4181a_3",
"example",
"smokeTest"
];
const resultSet = testSet.map((x) => x.match(/^(. ?)(?:[_-]\d)?$/)?.[1] ?? x);
// ^^^^^^^^^^ versioning here
// ^^^^^ match everything before
console.log(resultSet);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527570.html
標籤:正则表达式打字稿
