我有一个正则表达式需要检查base64是否有效。目前我在NodeJS中的代码看起来像这样:
let base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
if (base64regex.test(Payload.fileData) === true) {
//Further process the filedata
}
字符串
对于不超过1.6MB的较小base64文件,正则表达式工作正常,但对于较大的文件(>2MB),它会导致:
RangeError: Maximum call stack size exceeded
at RegExp.test (<anonymous>)
型
如何接受更大的base64数据而不会导致堆栈大小超过错误?
我在stackoverflow上看到了一些例子,但没有一个遇到过这个问题。base64regex.test()调用是递归发生的吗?如果是,我该如何解决这个问题?
1条答案
按热度按时间u4dcyp6a1#
而不是RegExp -这可能会导致 * 最大调用堆栈大小 * 问题,如this one
您可以尝试使用另一种方法,例如:
字符串
(使用大小> 18 Mb的图像进行测试)