我现在的代码是这样的:
var regex = '@([a-z0-9_]+)';
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>');
但是,当我输入“你好,这是@test!”这样的句子时它不会改变任何东西,它仍然以纯文本显示。
为什么会这样?
最佳答案
那是因为您将 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 .
关于javascript - 为什么在我尝试替换 @mention 时正则表达式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168404/