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

时间:2015-06-26 14:13:47

标签: javascript regex

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

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

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

这样的锚标签
<a href='#123='>#123=</a>

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

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

结果:

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

我做错了什么?

2 个答案:

答案 0 :(得分:8)

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

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

替换为$&

请参阅demo

结果:

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

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

答案 1 :(得分:2)

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

将组换成()