What is 1 for in regular expression, in javascript?

Asked

Viewed 766 times

6

I was taking a look at this @Sergio response here at stackoverlow:

/a/93995/4995

There was an excerpt of code like this:

/^(\d)\1+$/.test(111)

What exactly does the \1 in that regular expression?

2 answers

8


If you have one or more capture groups in the regex \1 fetch the value captured in the first group. As a variable that takes the value of the group. If there is more than one you can use \2, etc..

For example:

  • /^(\w)\1(\d)\2$/

accepts strings with two equal letters followed by two numbers equal to two.
For example aa11 or bb33 (example).

  • /^(\w)(\d)\1\2$/

is similar to the example above but accepts interspersed patterns.
For example a1a1 or b3b3 (example).

  • 3

    are called retrovisores, because they use something that has already been captured.

  • Just to finish solving the question: This only exists in javascript?

  • @Wallacemaxters this exists in almost all programming languages. Apparently RE2 does not support, but most support. Take a look here, in the column "Backreference".

3

It is the result of the first group that is representing the ( ), then number bar (\1) get its value. Other languages use dollar sign, e.g.: $1.

Regular expressions have utilities on the day, say you have a text file full of Inserts where dates are in format dd/mm/yyyy with a suitable editor it is possible to convert to yyyy-mm-dd replace.

23/10/2015

Utilize ([0-9]{2})\/([0-9]{2})/([0-9]{4}) to cover the date and \3\2\1 this will change the position of the year by the day, then just change the tab of \ for - and date will stay 2015-10-23.

  • The interesting thing is that usually the $1 is used "on the other side" of regexp. I mean, after capture. Equal preg_replace('/(\w+)/, 'Peguei isso $1', 'Aqui')

Browser other questions tagged

You are not signed in. Login or sign up in order to post.