Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex replace with number after capture group?

Tags:

regex

I have a regex pattern like this:

([0-9]*)xyz

I wish to do substitution like this:

$10xyz

The problem is that the $1 is a capture group and the 0 is just a number I want to put into the substitution. But regex thinks I'm asking for capture group $10 instead of $1 and then a zero after it.

How do I reference a capture group and immediately follow it with a number?

Using JavaScript in this case.

UPDATE As pointed out below, my code did work fine. The regex tester I was using was accidentally set to PCRE instead of JavaScript.

like image 439
Jake Wilson Avatar asked Jan 02 '15 16:01

Jake Wilson


1 Answers

Your code indeed works just fine. In JavaScript regular expression replacement syntax $10 references capturing group 10. However, if group 10 has not been set, group 1 gets inserted then the literal 0 afterwards.

var r = '123xyz'.replace(/([0-9]*)xyz/, '$10xyz');
console.log(r); //=> "1230xyz"
like image 111
hwnd Avatar answered Oct 15 '22 03:10

hwnd