11

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

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

我正在尝试将所有“and”和“eq”替换为“&”和“=”,但我只能让我的 javascript 替换第一次出现。该表单被命名/标识为“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

我错过了什么吗?

4

4 回答 4

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

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

于 2013-04-30T10:13:51.260 回答
1

尝试这个 :

replaced = finalurl.replace(/and/g, "&").replace(/eq/g, "=");
于 2013-04-30T10:17:11.273 回答
0

您可以将正则表达式与全局标志 一起使用

var finalurl = '{$i.tileid}androoftiletypeeq{$i.model}andproducenteq{$i.producent}';
finalurl.replace(/and/g, "&").replace(/eq/g, "=")

如果您的字符串中总是包含{...}变量,您可以使用以下命令来避免意外替换变量或请求参数名称

finalurl.replace(/\}and/g, "}&").replace(/eq\{/g, "={")
于 2013-04-30T10:14:02.300 回答
0

从 ES12

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

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

否则

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

var replaced = finalurl.replace(/and/g, '&').replace(/eq/g, '=');
于 2022-01-15T01:04:32.387 回答