我有以下問題,而試圖執行一個正則表達式替換:的Javascript正則表達式替換爲「未定義」
這裏是我的字符串和正則表達式:
var content = "This is the city of {{city}}, located in the county of {{county}} and the state of {{state}}"
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, '$1')
「這是城市的城市,位於縣和州的州``
這是我的上下文對象爲我的正則表達式替換:
var context = {city: "Abanda", county: "Chambers County", state: "Alabama"}
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, context['$1'])
「這是一個城市的不確定,位於未定義縣和不確定的狀態」烈文
爲什麼我的正則表達式替換undefined
失敗?我下面MDN的文檔的正則表達式替換和匹配在這裏:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-capturing-parentheses
在調試這個問題,我得到了下面,這強調了訪問正則表達式的方法中替換對象的屬性時,有可能是一個問題:
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, '$1')
「這是一個城市的城市,位於該縣的縣和州的狀態」
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, context)
這是城市的[目標對象],位於[目標對象]縣,[對象的對象]的狀態
任何人都可以解釋一下嗎?
'上下文[ '$ 1']'被評估以'undefined' *之前*被傳遞給函數。您需要使用回調函數根據匹配進行動態計算。 – Bergi