2014-01-13 29 views
2

我掙扎了JavaScript的正則表達式語句一點點 - 我不能完全看到什麼是錯的。我測試過在線工具,他們建議它應該能夠工作,所以我假設我習慣使用C#正則表達式和JavaScript之間有些不同。JavaScript的正則表達式置換參考

我工作中的字符串很簡單:

[a] + [b] 

我試圖用正則表達式匹配:

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

我試圖取代與價值以下:

viewModel.$1.control.value() 

這應該離開我:

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

不幸的是我總是讓我的打印inital值,這表明我的匹配不工作,但我不明白爲什麼。我試過的唯一明顯的事情是在正向和反斜槓之間切換方括號的轉義。

任何人都可以提出其他什麼可能是錯了嗎?

+3

呀,正斜槓逃逸的事情是非常錯誤的,實際上應該是一個語法錯誤。所以如果你能先解決這個問題。接下來,據我所知,JavaScript不支持命名捕獲...這也應該是一個語法錯誤。你有沒有檢查過你的控制檯? – Ryan

回答

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()" 
  • 你也需要逃避[]爲了在正則表達式匹配。
+1

你應該補充一點,你定逃逸 –

+0

謝謝,我只是增加。 – anubhava

+0

我認爲你剛剛拋出了一些我從未見過的東西 - 第一個參數是如何放入s.replace字符串的? – Ian