javascript - 为什么 javascript 不能替换 Chrome 或 IE 中的全局标志,我该如何解决?

标签 javascript google-chrome

根据String.prototype.replace() page on MDN ,我应该能够通过使用轻松替换多个模式

str.replace('what to replace', 'replace with', 'flags')

并将标志设置为 'g'

它在 Firefox 3.6 中完美运行。但在 Chrome 和 IE8 中,它只替换了第一个 'what to replace'

我可以用

str.replace(/what to replace/gi, 'replace with')

语法。但是我将 'what to replace' 从数组中提取出来,这使得很难在该语法中添加标志。

这是我尝试使用的代码。如何修改它以在 Chrome 和 Firefox 中工作?

function generateQuestion()
{
    //alert('variable length: '+variableList.length);
    for(i=0;i<variableList.length;i++)
    {
        variable = variableList[i];
        rep = replacementList[i];
        flags = "gi";
        questionText = questionText.replace(variable, rep, flags);
    }
}

为什么我必须费心修改它? Chrome 不应该按照链接中的描述评估 JavaScript 吗?

最佳答案

您链接到的页面提到:

The use of the flags parameter in the String.replace method is non-standard. For cross-browser compatibility, use a RegExp object with corresponding flags.

基本上,它只适用于 Firefox。根据文档,您可以使用 new RegExp 动态生成正则表达式:

var regex = new RegExp(variable, 'gi');
questionText = questionText.replace(regex, rep);

然而,这将需要对 variable 进行转义。

关于javascript - 为什么 javascript 不能替换 Chrome 或 IE 中的全局标志,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981501/

相关文章:

javascript - 使用 Slim 3 和 Twig 在 jQuery 帖子上收到 400(错误请求)

javascript - 在 chrome 中启用 html5 音频播放器的下载按钮

html - CSS3 动画适用于除 Chrome 之外的所有浏览器

google-chrome - Chrome 不显示完整网址

javascript - 重新渲染次数过多。即使功能正常,react 也会限制渲染次数以防止无限循环

javascript - Kendo Autocomplete 中的自定义过滤/排序逻辑

javascript - Chrome 和 Edge 在选中时以不同方式处理设置为 "indeterminate"的复选框

javascript - 尝试在视频标签上设置 crossorigin 属性时,视频播放已损坏

javascript - Javascript 中所有 LinkedList 节点的正确迭代

javascript - 如何保持标题静态,滚动时始终位于顶部?