用javascript替换字符串中的多次出现

新手上路,请多包涵

我有一个带有参数的选择框作为选项中的值,设置如下:

 <option value="{$i.tileid}androoftiletypeeq{$i.model}andproducenteq{$i.producent}">{$i.name} {$i.$title}</option>

我正在尝试将所有“and”和“eq”替换为“&”和“=”,但我只能让我的 javascript 替换第一次出现的位置。该表格被命名/ ID’ed“rooftile_select

 $("#rooftile_select").change(function(event) {

  event.preventDefault();

  var data = $("#rooftile_select").serialize();
  var pathname = window.location;
  var finalurl = pathname+'&'+data;

  var replaced = finalurl.replace("and", "&").replace("eq", "=");
});

finalurl 中的最后一个参数如下所示:

 &rid=56&rooftiletype=9andproducenteqs

我错过了什么吗?

原文由 Morten Hagh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 554
2 个回答
var replaced = finalurl.replace(/and/g, '&').replace(/eq/g, '=');

这应该可以解决问题。随着 g/ 之后,你说你想替换所有出现的事件。

原文由 Michael Kunst 发布,翻译遵循 CC BY-SA 3.0 许可协议

自 ES12

截至 2020 年 8 月,现代浏览器已支持 ECMAScript 2021 ( ES12 ) 语言规范定义的 String.replaceAll() 方法。

 var replaced = finalurl.replaceAll('and', '&').replaceAll('eq', '=');

否则

仅当我们将模式作为正则表达式提供时,我们才能进行完全替换

var replaced = finalurl.replace(/and/g, '&').replace(/eq/g, '=');

原文由 PaulCrp 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题