gpt4 book ai didi

javascript - 如何在React-Native Webview的injectedJavaScript prop中使用RegExp?

转载 作者:行者123 更新时间:2023-11-30 23:58:19 24 4
gpt4 key购买 nike

当我在React-Native-Webview的injectedJavaScript prop中使用正则表达式时,将抛出错误未终止的正则表达式文字错误并且正则表达式将不会被遵守。

我应该如何在注入(inject)的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 原生版本:0.61.2
  • react-native-webview 版本:8.1.2

也请检查下面的错误屏幕。

enter image description here

完整错误消息:

评估注入(inject)的 JavaScript 时出错:这可能是由于返回类型不受支持造成的。尝试将 true 添加到注入(inject)的 JavaScript 字符串的末尾。错误域=WKErrorDomain代码=4“发生JavaScript异常”UserInfo={WKJavaScriptExceptionLineNumber=1,WKJavaScriptExceptionMessage=SyntaxError:未终止的正则表达式文字'/',WKJavaScriptExceptionColumnNumber=0,WKJavaScriptExceptionSourceURL= https://github.com/ashi009/node-fast-html-parser,NSLocalizedDescription=发生JavaScript异常}

最佳答案

您不是在编写纯 Javascript - 您是在 Web View 中编写 Javascript,必须首先评估您的语法。要在 injectedJavaScript 中使用文字反斜杠(例如,对于 \r),请改为放置两个反斜杠 (\\r):

injectedJavaScript={`const regE = new RegExp(/\\n|\\r/);`}

我认为

<WebView
source={{ uri: 'https://github.com/ashi009/node-fast-html-parser' }}
injectedJavaScript={`const regE = new RegExp(/\n|\r/);`}
/>

将字符串文字中的 \n 作为代码中的换行符,相当于:

<WebView
source={{ uri: 'https://github.com/ashi009/node-fast-html-parser' }}
injectedJavaScript={`const regE = new RegExp(/
|\r/);`}
/>

(同样的事情也用 \r 完成)。但正则表达式文本中不允许使用换行符。

关于javascript - 如何在React-Native Webview的injectedJavaScript prop中使用RegExp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60910417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com