javascript - 为什么在我尝试替换 @mention 时正则表达式不起作用?

标签 javascript regex replace

我现在的代码是这样的:

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/

相关文章:

javascript - 使用正则表达式将单引号更改为双引号

excel - 替换Excel中的所有字母

PHP - 从字符串中删除解码的 HTML 实体

javascript - 我们总是可以使用 knex 和 postgres 将日期列作为字符串 (varchar) 获取吗?

javascript - Shim - 如何加载包含点的文件

javascript - Parse.com 创建具有关系的对象

c++ - 具有特殊字符的数字的正则表达式**仅**

regex - 提取单词并将其放在行首

用多个元素替换向量中的一个元素

javascript - js倒计时只倒计时一次