使用引用替换JavaScript正则表达式

时间:2014-01-13 17:33:08

标签: javascript regex

我正在使用JavaScript正则表达式语句进行一些努力 - 而且我看不出有什么问题。我已经在在线工具中进行了测试,他们认为它应该可行,所以我假设我习惯使用的C#正则表达式与JavaScript之间有所不同。

我正在使用的字符串非常简单:

[a] + [b]

我正在尝试使用的正则表达式匹配是:

/[(?<name>[a-zA-Z0-9])/]

我正在尝试使用以下内容替换该值:

viewModel.$1.control.value()

哪个应该留给我:

viewModel.a.control.value() + viewModel.b.control.value()

不幸的是,我总是打印出我的初始值,表明我的匹配不起作用,但我不明白为什么。我试过的唯一明显的事情就是在前向和反斜杠之间切换方括号的转义。

有人可以提出其他可能出错的建议吗?

1 个答案:

答案 0 :(得分:2)

Javascript正则表达式中没有命名组。使用此:

var s = '[a] + [b]';
repl = s.replace(/\[([a-zA-Z0-9])\]/g, 'viewModel.$1.control.value()');
//=> "viewModel.a.control.value() + viewModel.b.control.value()"
  • 您还需要转义[]才能在正则表达式中匹配它们。