6

I have a textarea with lots of lines that look like:

#1=stuff
#2=more stuff
...
#123=even more stuff
...

I'm using regex to find the #num= pattern (/^#[0-9]*=/) and I want to make them anchor tags like

<a href='#123='>#123=</a>

But it won't work as I thought it would.

"#2=".replace(/^#[0-9]*=/,"<a href='$1'>$1</a>")

The result:

<a href='$1'>$1</a>

What am I doing wrong?

2
  • You're not capturing the pattern match. use /^(#[0-9]*=)/ Commented Jun 26, 2015 at 14:16
  • you aren't declaring any capture groups. Commented Jun 26, 2015 at 14:16

2 Answers 2

9

You forget about capturing groups or to refer to the 0th group with $& and you only handle the initial number because you are using a start of string anchor (you need to remove it to match all of them, or use a multiline flag if you want to match beginning of lines):

/^#[0-9]*=/m

Replace with $&.

See demo

Results:

<a href='#1='>#1=</a>stuff
<a href='#2='>#2=</a>more stuff
...
<a href='#123='>#123=</a>even more stuff

Just note that backreferences in the replacement string can only be evaluated when there are capturing groups set, otherwise they are treated as literal strings in the replacement.

Sign up to request clarification or add additional context in comments.

Comments

2
"#2=".replace(/^(#[0-9]*=)/,"<a href='$1'>$1</a>")

wrap group to ()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.