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'

谁能解释为什么会这样,并提供修复?

4

1 回答 1

2

在正则表达式中, char*是一个量词。表达方式:

a*

表示a 零次或多次a也可以是表达式)。

当您尝试匹配*自身而不将其用作量词时,您应该对其进行转义:

var styles = {
    "bold italic" : "\\*\\*\\*",
    "bold"        : "\\*\\*",
    "italic"      : "\\*"
};
于 2013-08-20T21:15:35.513 回答