2013-08-20 18 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的答案,但是你不能赞成它,我会为你做。 –

相关问题