gpt4 book ai didi

javascript - JS String.replace 可以与 Safari 一起使用

转载 作者:行者123 更新时间:2023-11-30 18:51:05 28 4
gpt4 key购买 nike

背景故事:

这在除 Safari (5.0.1) 以外的所有浏览器中都能正常工作

var chunk = arr[i];
chunk = chunk.replace('$', '\\$');
var a = eval('message.match(/' + chunk + '/gi);');
if(a instanceof Array) symbol = symbol.concat(a);

所以我修改成如下:

var chunk = String(arr[i]);
chunk = chunk.replace('$', '\\$');
var a = eval('message.match(/' + chunk + '/gi);');
if(a instanceof Array) symbol = symbol.concat(a);

这让 Safari 对抛出模棱两可的错误感到更开心(有趣!)

我已经找到解决方案并将其发布在下面,以防其他脚本编写者遇到此问题。

最佳答案

我无法重现问题,因为我不确定 chunk 的值是多少。

无论如何,这是一个不必要地使用 eval 的例子,你可以使用 RegExp 构造函数来构建一个 RegExp 对象一个字符串,例如:

var re = /foo/gi;

相当于在运行时用RegExp构造器创建一个对象:

var re = new RegExp('foo', 'gi');

将它应用到您的代码中:

var chunk = String(arr[i]); // use String() only if you are not sure if arr[i] is

// Be aware that the following line is replacing only the first $
// char and you may want to scape other meta-characters:
chunk = chunk.replace('$', '\\$');
var a = message.match(new RegExp(chunk,'gi'));

if(a instanceof Array) symbol = symbol.concat(a);

关于javascript - JS String.replace 可以与 Safari 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877833/

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