2015-01-02 10 views
4

У меня есть шаблон регулярного выражения, как это:Regex заменить на номер после группы захвата?

([0-9]*)xyz 

Я желаю, чтобы сделать замену, как это:

$10xyz 

Проблема заключается в том, что $1 является захват группы и 0 просто номер I хочу вставить в замещение. Но регулярное выражение думает, что я прошу захватить группу $10 вместо $1, а затем после него нуль.

Как я могу ссылаться на группу захвата и сразу последовать за ней цифрой?

Использование JavaScript в этом случае.

ОБНОВЛЕНИЕ Как указано ниже, мой код действительно работал нормально. Тестер регулярных выражений, который я использовал, был случайно установлен на PCRE вместо JavaScript.

+5

Какой язык вы используете? – hwnd

+1

Какой диалект regex (аромат)? –

+2

В разделе «Часто задаваемые вопросы о регулярных выражениях переполнения стека» (http://stackoverflow.com/a/22944075/2736496) в разделе «Группы» рассматривается следующая запись: * [Как следовать за нумерованной группой захвата, например \ 1, с номером?] (Http://stackoverflow.com/q/5984633/3622940) * – aliteralmind

ответ

3

Ваш код действительно работает просто отлично. В синтаксисе замены регулярного выражения JavaScript $10 ссылки группы захвата 10. Однако, если группа 10 не была установлена, в нее вставляется группа 1, а затем литерал 0.

var r = '123xyz'.replace(/([0-9]*)xyz/, '$10xyz'); 
console.log(r); //=> "1230xyz" 
+0

Вы верны. Извините, тестер, который я использовал, был настроен на использование PCRE вместо JS. –

1

Ваш код делает work, если я что-то не хватает:

var str = "3xyz"; 
var str1 = str.replace(/([0-9]*)xyz/, "$10xyz"); 
alert(str1); // alerts 30xyz 
+0

Вы правы. Извините, тестер, который я использовал, был настроен на использование PCRE вместо JS. –

+0

Вы только что удалили вопрос, но ответ был: http://getgb.io/ – VonC