Нужно заменить все после второго матча - PullRequest
1 голос
/ 02 апреля 2010

Хорошо, поэтому, если у меня есть этот шаблон:

ab&bc&cd&de&ef

И мне нужно заменить все амперсанды, кроме первого, запятыми, чтобы он выглядел так:

ab&bc,cd,de,ef

Это, наверное, очень просто, но я не могу понять это из жизни ...

Ответы [ 3 ]

3 голосов
/ 02 апреля 2010

Это не так просто, потому что JavaScript не выглядит позади.

Попробуйте

result = subject.replace(/(^(?:[^&]+&[^&]+)|[^&]+)&/g, "$1,");

Пояснение:

( Запишите следующее в обратную ссылку $1:

^(?:[^&]+&[^&]+) Начало строки, за которым следуют два поля, разделенных амперсандом

| или

[^&]+ одно поле (поле содержит один или несколько символов без амперсанда).

) Конец группы захвата

& соответствует амперсанду.

Таким образом, первый амперсанд будет пропущен в матче. Если вам нужно обработать пустые поля, используйте

(^(?:[^&]*&[^&]*)|[^&]*)&
0 голосов
/ 02 апреля 2010
[^&]{2}&([^&]{2}&)*

Не могу помочь вам с частью JavaScript, но, может быть, это поможет?

0 голосов
/ 02 апреля 2010

Почему бы не разбить исходную строку на &

Регистрация piece1, piece2, .... pieceN с ,

Соедините piece0 с результатом выше с &

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