正则表达式用HTML标签包装字符串

mot*_*son 5 javascript regex

我有一个textarea,有很多行,看起来像:

#1=stuff
#2=more stuff
...
#123=even more stuff
...
Run Code Online (Sandbox Code Playgroud)

我正在使用正则表达式找到#num = pattern(/ ^#[0-9]*= /),我想让它们像锚标签一样

<a href='#123='>#123=</a>
Run Code Online (Sandbox Code Playgroud)

但它不会像我想象的那样起作用.

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

结果:

<a href='$1'>$1</a>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Wik*_*żew 8

您忘记了捕获组或引用第0组,$&并且您只处理初始数字,因为您正在使用字符串锚点的开头(您需要删除它以匹配所有它们,或者如果您想要使用多行标记匹配行的开头):

/^#[0-9]*=/m
Run Code Online (Sandbox Code Playgroud)

替换为$&.

演示

结果:

<a href='#1='>#1=</a>stuff
<a href='#2='>#2=</a>more stuff
...
<a href='#123='>#123=</a>even more stuff
Run Code Online (Sandbox Code Playgroud)

请注意,只有在设置了捕获组时才能评估替换字符串中的反向引用,否则它们将被替换为替换中的文字字符串.