正则表达式只替换字符串的一部分

时间:2014-03-28 21:05:11

标签: regex

我有这段代码:

var regex = /ancesterComboValue=.*(&|$)/;
if( regex.test(this.proxy.url)) {
   this.proxy.url = this.proxy.url.replace(regex,'ancesterComboValue='+newValue);
}
else {
   this.proxy.url += '&ancesterComboValue='+newValue;
}

用于替换网址中的ancesterComboValue参数。

但它没有取代&字符,这有什么特别之处吗?

另外,我可以只替换正则表达式中的某些内容吗?例如,在网址字符串中有许多=个符号,如果我只想用ancesterComboValue=替换这个符号:%,如何在不指定整个短语的情况下执行此操作( ancesterComboValue%)?

由于

1 个答案:

答案 0 :(得分:0)

如果它仍然可以帮助你,回答这个古老的问题,因为还没有人这样做过。

您的搜索正则表达式应如下所示:

ancesterComboValue=[^&#\s]*

这可以确保:

  • 我们不会跑过下一个&
  • 我们不会多行
  • 如果#top中有标记锚,我们不会错误地替换它。

您可以在the demo上看到匹配项。

解释正则表达式

ancesterComboValue=      # 'ancesterComboValue='
[^&#\s]*                 # any character except: '&', '#', whitespace
                         # (\n, \r, \t, \f, and " ") (0 or more times
                         # (matching the most amount possible))