我正在尝试使用look back将以下字符串匹配到2个组中,但显然,它们在JavaScript中不受支持。
正则表达式: ((?<=:).*(?=;))|((?<=,).*$)
Online Demo
data:image/jpeg;base64,/abcd1234...
--> group1: image/jpeg
--> group2: /abcd1234...
然后我尝试使用XRegExp库,希望它支持后面但仍然没有成功。
var XRegExp = require("xregexp");
var base64 = "data:image/jpeg;base64,/abcd1234...";
base64 = XRegExp.matchRecursive(base64, '((?<=:).*(?=;))|((?<=,).*$)', 'g');
但是我收到以下错误:
node_modules/xregexp/xregexp-all.js:3376
new RegExp(generated.pattern, generated.flags),
^
SyntaxError: Invalid regular expression: /((?<=:).*(?=;))|((?<=,).*$)/: Invalid group at new RegExp (native)
我的问题有没有办法使用JavaScript的本地正则表达式解析器运行上面的正则表达式,可能是通过反转字符串或者是否有一个支持后面的JavaScript的库。提前致谢
答案 0 :(得分:1)
更具体:
(?=[^:;]*;)([^:;]+)|([^;,]+)$
或者使用更多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])
}