【发布时间】:2009-02-05 17:22:03
【问题描述】:
我尝试用 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>' );
但它不起作用。它甚至说我的正则表达式(因为第一个例子做得很好)是无效的:
正则表达式中的不匹配)
我认为这一定与我不知道的一些 RegExp 对象特性有关。 我做错了什么,如何解决问题?
【问题讨论】:
-
附带说明,您可能会发现通过在线测试器 (pagecolumn.com/tool/regtest.htm) 运行 JavaScript 正则表达式很有用。
-
谢谢,这似乎是一个很棒的工具。我使用了这个 (regexp-evaluator.de/evaluator) PHP-ish 评估器。在 JS 中编写脚本时,也许 JS-ish 更好:)
-
data.replace(/foo/g, 'bar')和data.replace(new RegExp('/foo', 'g'), 'bar')是同一个东西
标签: javascript regex