Заменить подстроку с помощью JavaScript - PullRequest
0 голосов
/ 19 июня 2011

Необходимо заменить подстроку в URL (технически просто строку) на javascript. Строка типа

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, либо в его середине. Я пытаюсь покрыть это следующим:

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 ]

1 голос
/ 19 июня 2011
str.replace(/SearchableText=[^&]*/, 'SearchableText=' + newWord)
1 голос
/ 19 июня 2011

\S+ и \S* в вашем регулярном выражении соответствуют всем непробельным символам.

Возможно, вы хотите удалить их и якоря.

0 голосов
/ 19 июня 2011

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...