【发布时间】:2020-03-29 05:12:08
【问题描述】:
当我在 React-Native-Webview 的注入 JavaScript 属性中使用 regexp 时,会抛出错误 Unterminated regular expression literal error 并且不会使用 regexp。
我应该如何在注入的 JavaScript 中使用正则表达式? 如果没有,我可以使用解决方法吗?
最小可重现代码如下:
// this won't work
<WebView
source={{ uri: 'https://github.com/ashi009/node-fast-html-parser' }}
injectedJavaScript={`const regE = /\n|\r/`}
/>
// this won't work as well
<WebView
source={{ uri: 'https://github.com/ashi009/node-fast-html-parser' }}
injectedJavaScript={`const regE = new RegExp(/\n|\r/);`}
/>
// this will work
<WebView
source={{ uri: 'https://github.com/ashi009/node-fast-html-parser' }}
injectedJavaScript={`const regE = /A*B*C*/`}
/>
- 操作系统:iOS
- 操作系统版本:13.3.1
- react-native 版本:0.61.2
- react-native-webview 版本:8.1.2
也检查下面的错误屏幕。
完整的错误信息:
评估注入的JavaScript 时出错:这可能是由于返回类型不受支持。尝试将 true 添加到注入的 JavaScript 字符串的末尾。错误域=WKErrorDomain 代码=4“发生 JavaScript 异常”UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=SyntaxError: 未终止的正则表达式文字'/', WKJavaScriptExceptionColumnNumber=0, WKJavaScriptExceptionSourceURL=https://github.com/ashi009/node-fast-html-parser, NSLocalizedDescription=发生 JavaScript 异常}
【问题讨论】:
-
可能是转义字符问题
-
您能详细说明一下吗?
-
疯狂猜测。尝试一个没有反斜杠的模式,看看它是否编译。也可以在声明的最后加上
; -
我可以使用没有反斜杠的模式而不会出错。谢谢!但我确实需要有反斜杠的模式。那我该怎么办?
-
听起来它在 webview 中被解释为转义字符或其他东西,因此在模式中单个反斜杠是不够的。尝试双转义反斜杠,它可能会起作用:
/\\n|\\r/;
标签: javascript ios react-native wkwebview