微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript RegExp对象

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

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

它工作得很好,但现在我想用RegExp对象来做这件事.所以我设置了以下代码

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

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

unmatched ) in regular expression

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐