Regex заменить символ внутри - PullRequest
0 голосов
/ 19 января 2011

Как мне написать регулярное выражение в javascript, которое заменяет все на определенный символ внутри "url ()"?

Пример строки

"blabla url(hello;you);"

Я хочу заменить знак ";" внутри url () на что-то похожее

"blabla url(hello[]you);"

Ответы [ 3 ]

3 голосов
/ 19 января 2011

Хм, может быть, что-то вроде этого:

var result = "blabla url(hello;you)".replace(/url\(([^)]*)\)/, function(_, url) {
  return "url(" + url.replace(/;/g, "[]") + ")";
});

Я использовал два вызова «.replace ()», которые могут не быть необходимыми, но мне стало легче думать. Внешний изолирует содержимое "url ()", а затем внутренняя замена исправляет точки с запятой.

1 голос
/ 19 января 2011
var str = "blabla url(hello;you;cutie);";
str = str.replace( /url\(([^)]+)\)/g, function(url){
  return url.replace( /;/g, '[]' );
});
// "blabla url(hello[]you[]cutie);"
0 голосов
/ 19 января 2011

regEx кажется немного тяжелым.split-join, вероятно, быстрее в большинстве браузеров.

var result = "blabla url(hello;you)".split(';').join('[]');

Для regEx требуется, я думаю, я бы сделал:

var result = "blabla url(hello;you)".replace(/;/,'[]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...