![](/img/trans.png)
[英]RegEx to extract array of strings in javascript using match()
[英]Extract strings as an array from a string using javascript
我有一個弦
make -j128
我需要從該字符串中提取-j128 。
現在為什么我需要將字符串數組作為輸出,所以我會遇到這樣的情況:
repo sync -j32 && make -j128
在這種情況下,我需要獲取-j32和-j128
因此,第一種情況的輸出為[-j128] ,第二種情況的輸出為[-j32,-j128]
我想要的最終結果是沒有-j的數字,它們是[128]和[32,128] ,我可以通過刪除前面的-j來處理。 如果你們認為為什么我不能在開頭就提取數字。 這是有原因的,因為字符串也可以像這樣
repo blah blah 123 blah -j32 blah 3 blah
我只需要以-j開頭的32
即使在大量使用Google搜索后,我也無法找到解決方案,這可能是因為不是這樣,所以在感謝regex的幫助下,我們將不勝感激。
這是使用String.prototype.match()
的簡單解決方案:
const s = 'repo sync -j32 && make -j128'; const re = /-j\\d+/g const result1 = s.match(re); const result2 = result1.map(x => +x.replace(/\\D/g, '')); console.log(result1); console.log(result2);
這里,
result1
將是一個以-j
開頭的所有子字符串的數組,后跟任意數量的數字。 result2
是相同的數組,其中所有非數字均已刪除,並且值轉換為數字。 您可以使用以下正則表達式來匹配所有帶有-j
前綴的數字:
/-j(\d+)/g
然后使用.exec
獲取所有匹配的組並將它們放入數組中。
請參見下面的工作示例:
const str = "repo sync -j32 && make -j128"; let nums = []; let regex = /-j(\\d+)/g; while(match = regex.exec(str)) { nums.push(+match[1]); } console.log(nums);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.