我有這些用于不同檔案格式的 base64 字串:
const a1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...";
const a1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...";
const a2 = "data:audio/webm;codecs=opus;base64,GkXfo59ChoEBQveBAULygQ...";
const a3 = "data:audio/mpeg;base64,//uQRAAAAAAAAAAAAAAAAAAAAA...";
const a4 = "data:audio/wav;base64,UklGRixtHwBXQVZFZm10IBAAAAA...";
我怎樣才能得到檔案型別而不是像這樣的格式:
image, audio etc.
uj5u.com熱心網友回復:
一個基本的正則運算式可以做到這一點。
更新:這是訪問根媒體型別的運算式:/^data:([^/] )\//
const images = [
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...",
"data:audio/webm;codecs=opus;base64,GkXfo59ChoEBQveBAULygQ...",
"data:audio/mpeg;base64,//uQRAAAAAAAAAAAAAAAAAAAAA...",
"data:audio/wav;base64,UklGRixtHwBXQVZFZm10IBAAAAA..."
];
const getMediaType = (image) => image.match(/^data:(. ),/)?.[1];
const getRootMediaType = (image) => getMediaType(image).split('/')?.[0];
console.log(images.map(getMediaType));
console.log(images.map(getRootMediaType).join(', '));
.as-console-wrapper { top: 0; max-height: 100% !important; }
再次出現,但僅針對根型別:
const images = [
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...",
"data:audio/webm;codecs=opus;base64,GkXfo59ChoEBQveBAULygQ...",
"data:audio/mpeg;base64,//uQRAAAAAAAAAAAAAAAAAAAAA...",
"data:audio/wav;base64,UklGRixtHwBXQVZFZm10IBAAAAA..."
];
const getRootMediaType = (image) => image.match(/^data:([^/] )\//)?.[1];
console.log(images.map(getRootMediaType).join(', '));
.as-console-wrapper { top: 0; max-height: 100% !important; }
uj5u.com熱心網友回復:
要獲取檔案型別,您可以使用:
const a1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...";
function getFileType(str){
return str.match(/:(. )\//gm)[0].slice(1, -1)
}
console.log(getFileType(a1))
要獲取檔案擴展名,您可以使用:
const a1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...";
function getFileType(str){
return str.match(/\/(. );/gm)[0].slice(1, -1)
}
console.log(getFileType(a1))
uj5u.com熱心網友回復:
例如使用正則運算式: /^data:([^\/] )\//
const strings = [
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbI...",
"data:audio/webm;codecs=opus;base64,GkXfo59ChoEBQveBAULygQ...",
"data:audio/mpeg;base64,//uQRAAAAAAAAAAAAAAAAAAAAA...",
"data:audio/wav;base64,UklGRixtHwBXQVZFZm10IBAAAAA..."
];
const getType = str => str.match(/^data:([^\/] )\//)[1];
console.log(strings.map(getType));
uj5u.com熱心網友回復:
向后查找 'data:' 并向前查找 '/',并回傳它們之間的字母數字。
const data = [
"data:image/png;base64",
"data:image/png;base64",
"data:audio/webm;codecs=opus;base64",
"data:audio/mpeg;base64",
"data:audio/wav;base64"
]
const types = data.map(str => {
let x = str.match(/(?<=data:)\w*(?=\/)/)[0]
return x;
})
console.log(types)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341553.html
標籤:javascript 正则表达式
上一篇:如何使用非捕獲組在標記之間用std::regex_replace替換空格?
下一篇:正則運算式-空白無法獲得整數值
