2015-11-08 1 views
-1

Учитывая такую ​​строку +as[23+"[email protected]"[email protected]] заменить все экземпляры @ между [ и ] с номером сразу после [ (в данном случае: 23). Ответьте на использование JavaScript (предложение использует .replace()). Таким образом, с помощью этого алгоритма, +as[23+"[email protected]"[email protected]] будет изменен на +as[23+"AS23D"-23]Используя два захват группы с JavaScript Заменит() функция

Вот мое регулярное выражение \[(\d+)[^\]]*(\@*)\] Вторая группа записи не захватывается (Regexr говорит мне, что ничего не захвачено во второй группе захвата). Мне нужна помощь в том, что вторая группа захвата захватывает все экземпляры @

Я пробовал с помощью Mozilla Developer помощь, но это не сработало. Любая помощь будет оценена. Ответы должны иметь объяснение.

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

+2

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, поскольку stackoverflow не является службой написания кода. – melpomene

+0

@melpomene Я отредактировал мой вопрос, чтобы показать вам мою работу. –

+1

Почему, по вашему мнению, вторая группа захвата «не захвачена»? (И что вы подразумеваете под этим?) – melpomene

ответ

0

Вы можете использовать replace с функцией обратного вызова в Javascript:

var s = '+as[23+"[email protected]"[email protected]]'; 
var r = s.replace(/\[(\d+)[^\]]*\]/, function($0, $1) { 
        return $0.replace(/@/g, $1);}); 
//=> +as[23+"AS23D"-23] 

$0 представляет всю строку между [ и ] и $1 является первым захватом группой, т.е. номер сразу после [.

 Смежные вопросы

  • Нет связанных вопросов^_^