Заменить все совпадения, кроме первого - PullRequest
1 голос
/ 12 августа 2010

У меня неправильный URL-адрес, например: http://www.abc.com/?abc&?as&?blah

Теперь я хочу сопоставить (и исключить) все ? в URL, кроме первого, чтобы сделать URL чистым. Возможно ли использование регулярных выражений в JavaScript? Я попробовал позитивный взгляд и другие методы, но у меня это не сработало.

Ответы [ 3 ]

2 голосов
/ 12 августа 2010
var url = 'http://www.abc.com/?abc&?as&?blah';
var pos = url.search(/\?/) + 1;
var validUrl = url.substr( 0, pos )
             + url.slice( pos ).replace(/\?/g, '');
2 голосов
/ 12 августа 2010

Возможно, не лучшее, но возможное решение: разрезать строку пополам на первом вопросительном знаке, удалить все вопросительные знаки во второй строке с помощью регулярных выражений, склеить их вместе.

1 голос
/ 12 августа 2010

Попробуйте,

var str = "http://www.abc.com/?abc&?as&?blah";
str = str.replace(/(http:\/\/[^\/]+\/\?[^\?]+)\?([^\?]+)\?([^\?]+)/,"$1$2$3");

Протестировано в тестере регулярных выражений javascript .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...