我目前的代码是这样的:
var regex = '@([a-z0-9_]+)';
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>');
然而,当我输入一句“你好,这是@test!”它不会改变任何东西,它仍然以纯文本显示。
为什么会这样?
答案 0 :(得分:5)
那是因为您已将regex
创建为字符串。当您传递一个字符串replace
方法时,它不会像正则表达式那样对待它;它查找要替换的字符串的字面值。
改为使用正则表达式文字:
var regex = /@([a-z0-9_]+)/;
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>');
或者调用RegExp
构造函数:
var regex = new RegExp('@([a-z0-9_]+)');
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>');
这是一个有效的demonstration。