Regexp在一个单词后匹配所有内容

时间:2018-02-08 02:02:53

标签: javascript regex

我正在尝试从data-url中提取base64字符串。字符串看起来像这样,所以我试图提取单词base64

之后的所有内容
test = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB'

所以我想从上面的字符串

中提取以下内容
,/9j/4AAQSkZJRgABAQAAAQAB

这是我的正则表达式

const base64rgx = new RegExp('(?<=base64)(?s)(.*$)');
console.log(test.match(base64rgx))

但这失败了,错误:

 VM3616:1 Uncaught SyntaxError: Invalid regular expression: /(?<=base64)(?s)(.*$)/: Invalid group

3 个答案:

答案 0 :(得分:3)

似乎不支持lookbehinds。但好消息是你不需要在这里看一下,下面的模式应该有效:

test = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB'
var regex = /.*?base64(.*?)/g;
var match = regex.exec(test);
console.log(match[1]);

我不确定要捕获的base64之后的字符串数量。例如,如果您不想使用逗号或9j部分,那么我们可以轻松地修改模式来处理它。

答案 1 :(得分:1)

&#13;
&#13;
var test = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB';

var regex = /(?<=base64).+/;

var r = test.match(regex);

console.log(r);
&#13;
&#13;
&#13;

这是正则表达式:https://regex101.com/r/uzyu0a/1

答案 2 :(得分:0)

您可能不需要正则表达式:只需使用indexOf找到base64字符串并使用substr

var test = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB';

var data = test.substr(test.indexOf('base64')+6); // 6 is length of "base64" string

console.log(data);