我尝试用JavaScript编写一个简单的Markdown解析器.因此,我想检查[link content][link id]
语法.我使用以下代码:
data = data.replace( /\[(.*?)\][ ]*\[([0-9]+)\]/g, '$1' );
它运行良好,但现在我想用RegExp对象来做这件事.所以我设置了以下代码:
var r = new RegExp( '\[(.*?)\][ ]*\[([0-9]+)\]', 'g' ); data = data.replace( r, '$1' );
但它不起作用.它甚至说我的正则表达式(自第一个例子以来工作得很好)是无效的:
正则表达式中无与伦比的
我认为它必须与我不知道的一些RegExp-object特性有关.我做错了什么,问题怎么解决?
因为RegExp构造函数的第一个参数是字符串而不是模式文字,所以必须转义反斜杠,因为您需要模式中的文字反斜杠:
var r = new RegExp( '\\[(.*?)\\][ ]*\\[([0-9]+)\\]', 'g' );