JavaScript正则表达式背后的替代或库建议

时间:2017-07-07 05:26:00

标签: javascript node.js regex

我正在尝试使用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的库。提前致谢

1 个答案:

答案 0 :(得分: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])
}