问题现场
【执行环境】
安卓设备,V8 引擎,Java 代码中调用 JavaScript
【报错日志】
2021-10-21 14:52:53.156 30457-30457/com.fuck.you E/com.fuck.you.JavaInvoker$1::MyJSExecutor: RangeError: Maximum call stack size exceeded (evaluating ’ .replace(myRegexPattern," ")’) (line 12 in the generated bundle)
/StackTrace/
String.replace@
renamedFunc3@unknown:12:9
renamedFunc2@unknown:35:26
renamedFunc1@unknown:94:215
global code@unknown:95:340global code@unknown:95:614
/StackTrace/,
function renamedFunc3(text) {
var context ={
text:decodeURIComponent(text),
myRegexPattern:/(([ds])|([dg])|([sdfasd])|([asdf])|([sdf])|([;;])|([kkk])|([sdf])|([sdf])|([xcxcv])|([sdf])|([uio])|([ouio])|([asdf])|([as])|([xxxz])|([sdf])|([dsfsd])|([wer])|([werw])|([11])|([rr])|([22])|([ddfg])|([ghjg])|([uio])|([tu])|([fgh])|([dfgh])|([fgh])|([erte])|([cvbc])|([sdf])|([zxcv])|([xcvxcv])|([xcvx])|([dad])|([asd])|([zxczxc])){1,}/g
};
// 省略更多
解释一下出错的代码,是一个字符串替换,将命中正则表达式 myRegexPattern 的字符替换成空格,比如将 text 中类似 [ds] 这样的子串替换成空格。