2017-07-07 6 views
1

私は次の文字列を2つのグループに一致させようとしていますが、JavaScriptではサポートされていません。JavaScriptの正規表現が代替またはライブラリの提案の背後にある

正規表現:((?<=:).*(?=;))|((?<=,).*$)Online Demo

data:image/jpeg;base64,/abcd1234... 

--> group1: image/jpeg 
--> group2: /abcd1234... 

その後、私はそれが背後にあるが、まだ何の成功を見てサポートしていないだろう期待してXRegExpライブラリを使用しようとしました。 JavaScriptでのライブラリがある

node_modules/xregexp/xregexp-all.js:3376 
     new RegExp(generated.pattern, generated.flags), 
     ^
SyntaxError: Invalid regular expression: /((?<=:).*(?=;))|((?<=,).*$)/: Invalid group at new RegExp (native) 

私の質問または文字列を逆にすることによって、おそらくJavaScriptののネイティブ正規表現パーサーを使用して正規表現の上で実行する方法があります:

var XRegExp = require("xregexp"); 
var base64 = "data:image/jpeg;base64,/abcd1234..."; 
base64 = XRegExp.matchRecursive(base64, '((?<=:).*(?=;))|((?<=,).*$)', 'g'); 

は、しかし、私は次のエラーを取得します背後を見るのをサポートする。事前に感謝

+0

なぜあなたはデータのURLを離れて選ぶしようとしています?それはどこから来ていますか、あなたはそれと何をするつもりですか? –

+0

@torazaburo私の最優先事項は、それからMIMEタイプを抽出することです –

+0

'responseType'をBlobに設定してURLを取得し、結果のBLOBの' type'プロパティを参照したいと思います。 –

答えて

1

は、より具体的に:

(?=[^:;]*;)([^:;]+)|([^;,]+)$ 

Live demo

以上のJSを使用します。

var re = /:([^:;]+);|,(.*)$/g; 
 
var str = "data:image/jpeg;base64,/abcd1234..."; 
 
var matches; 
 
while ((matches = re.exec(str)) !== null) { 
 
    console.log(matches[1] ? matches[1] : matches[2]) 
 
}

関連する問題