JavaScript RegExp对象

oko*_*man 3 javascript regex

我尝试用JavaScript编写一个简单的Markdown解析器.因此,我想检查[link content][link id]语法.我使用以下代码:

data = data.replace( /\[(.*?)\][ ]*\[([0-9]+)\]/g, '<a href="$2">$1</a>' );
Run Code Online (Sandbox Code Playgroud)

它运行良好,但现在我想用RegExp对象来做这件事.所以我设置了以下代码:

var r = new RegExp( '\[(.*?)\][ ]*\[([0-9]+)\]', 'g' );
data = data.replace( r, '<a href="$2">$1</a>' );
Run Code Online (Sandbox Code Playgroud)

但它不起作用.它甚至说我的正则表达式(自第一个例子以来工作得很好)是无效的:

正则表达式中无与伦比的

我认为它必须与我不知道的一些RegExp-object特性有关.我做错了什么,问题怎么解决?

Sea*_*ght 13

因为RegExp构造函数的第一个参数是字符串而不是模式文字,所以必须转义反斜杠,因为您需要模式中的文字反斜杠:

var r = new RegExp( '\\[(.*?)\\][ ]*\\[([0-9]+)\\]', 'g' );
Run Code Online (Sandbox Code Playgroud)