正则表达式变量(如在preg_replace中)

时间:2018-02-22 00:40:55

标签: javascript node.js regex

(请注意:我不是试图使用javascript中定义的变量来表示正则表达式,这是不同的,所以不要标记为重复)

你好,我正在尝试制作一个WebSocket与NodeJS聊天,此时我正在尝试制作基本的正则表达式替换功能。我正在尝试做以下事情:

1)将**randomTxt**替换为<b>randomTxt\</b>
2)将https://link.com/替换为<a href="https://link.com">https://link.com/</a>

在PHP中,我可以做到

$message = preg_replace('#\*{2}(.*?)\*{2}#', '<b>$1</b>', $message);
$message = preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $message);

但是在NodeJS中,似乎我不能使用像“$ 1”这样的正则表达式变量。 (试过新的RegExp,只是替换(//),不起作用。这就是我在下面尝试过的。

var linkReg = new RegExp("#\\*{2}(.*?)\\*{2}#", 'g');
str = str.replace(linkReg, "<b>$1</b>");

return str;

是否有相当于preg_replace,还是有其他方法可以使用正则表达式变量?谢谢你提前。

1 个答案:

答案 0 :(得分:0)

var text = 'bla bla **randomTxt** bla bla **randomTxt** bla bla'
var patt = /\*\*([^*]+)\*\*/g;
var new_text = text.replace(patt, '<b>$1</b>')
console.log(new_text)

var text = 'bla bla https://link.com/ bla bla https://link.com/ bla bla'
var patt = /(https?:\/{2}[^/]+\/)/g;
var new_text = text.replace(patt, '<a href=$1>$1</a>')
console.log(new_text)