2013-08-20 17 views
2

我想從對象屬性動態構造一個簡單的正則表達式。使用對象屬性構造正則表達式時量化器無效

var type = 'bold'; 

var styles = { 
    "bold italic" : "***", 
    "bold"  : "**", 
    "italic"  : "*" 
}; 

var re = new RegExp(styles[type], 'g'); 

但是,我得到一個無效量詞錯誤返回。

如果我把引號的變量,像這樣:

var re = new RegExp('"' + styles[type] + '"', "g"); 

它正常工作時type == 'italic'但不'bold'

任何人都可以解釋爲什麼是這樣,並且還提供了一個修復?

+0

你不解釋你從你正在試圖建立正則表達式的期望。 –

+0

結果在很大程度上與問題無關。我主要關心錯誤被拋出的原因。這只不過是需要逃避'*',就像@acdcjunior – Gordo

回答

2

在正則表達式中,char * is a quantifier。表達式:

a* 

手段a零次或多次a也可以是一個表達式)。

當你試圖以匹配*本身,而不是把它作爲一個量詞,你應該逃避它:

var styles = { 
    "bold italic" : "\\*\\*\\*", 
    "bold"  : "\\*\\*", 
    "italic"  : "\\*" 
}; 
+0

回答我是多麼愚蠢......當然。感謝超級及時的答覆。我會盡快將獎勵給你。乾杯 – Gordo

+0

@ user2616246我相信你應該能夠接受acdcjunior的答案,但是你不能贊成它,我會爲你做。 –

相關問題