用javascript替换子字符串

时间:2011-06-19 15:59:29

标签: javascript regex replace

需要用javascript替换URL中的子字符串(技术上只是一个字符串)。 像

这样的字符串
http://blah-blah.com/search?par_one=test&par_two=anothertest&SearchableText=TO_REPLACE

http://blah-blah.com/search?par_one=test&SearchableText=TO_REPLACE&par_two=anothertest

表示要替换的单词可以位于URL的最末端,也可以位于URL的中间。 我试图用以下内容来涵盖这些:

var newWord = NEW_SEARCH_TERM;
var str = 'http://blah-blah.com/search?par_one=test&SearchableText=TO_REPLACE&par_two=anothertest';
var regex = /^\S+SearchableText=(.*)&?\S*$/;
str = str.replace(regex, newWord);

但无论我做什么,我都会得到str = NEW_SEARCH_TERM。此外,当我在RegExhibit中尝试使用正则表达式时,选择要替换的单词以及跟随它的所有内容,这不是我想要的。

如何编写通用表达式来涵盖这两种情况并将正确的字符串保存在变量中?

3 个答案:

答案 0 :(得分:1)

正则表达式中的\S+\S*匹配所有非空白字符。

你可能想要删除它们和锚点。

答案 1 :(得分:1)

str.replace(/SearchableText=[^&]*/, 'SearchableText=' + newWord)

答案 2 :(得分:0)

http://jsfiddle.net/mplungjan/ZGbsY/

ClyFish在我摆弄的时候做到了

var url1="http://blah-blah.com/search?par_one=test&par_two=anothertest&SearchableText=TO_REPLACE";

var url2 ="http://blah-blah.com/search?par_one=test&SearchableText=TO_REPLACE&par_two=anothertest"

var newWord = "foo";
function replaceSearch(str,newWord) {
  var regex = /SearchableText=[^&]*/;

  return str.replace(regex, "SearchableText="+newWord);
}
document.write(replaceSearch(url1,newWord))
document.write('<hr>');
document.write(replaceSearch(url2,newWord))