(请注意:我不是试图使用javascript中定义的变量来表示正则表达式,这是不同的,所以不要标记为重复) 您好,我正在尝试与NodeJS进行WebSocket聊天,此时我正在尝试创建一个基本的正则表达式替换功能。我正在尝试做以下事情:
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,还是有另一种方法可以使用正则表达式变量?提前致谢。
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)