我有一个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>
我做错了什么?
答案 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>")
将组换成()