无法使用动态输入转义JavaScript RegExp中的单个perenthese

无法使用动态输入转义JavaScript RegExp中的单个perenthese,javascript,regex,Javascript,Regex,我有以下代码,我似乎无法开始工作。代码使用RegExp执行字符串匹配,并根据用户键入的内容进行动态输入。然而,当输入一个单一的(我收到一个错误 首先,我有一个函数来转义用户的输入,如下所示 String.prototype.regExpEscape = function() { return this.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\\$1'); }; 如果我记录regExpEscape函数的输出,我会看到以下内容: //

我有以下代码,我似乎无法开始工作。代码使用RegExp执行字符串匹配,并根据用户键入的内容进行动态输入。然而,当输入一个单一的(我收到一个错误

首先,我有一个函数来转义用户的输入,如下所示

String.prototype.regExpEscape = function() {
    return this.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\\$1');
};
如果我记录regExpEscape函数的输出,我会看到以下内容:

// Input
Test (

// Output
Test \(
所以它看起来工作正常。但是我在Chrome的控制台中收到:
SyntaxError:Invalid regular expression:/(Test()/:Unterminated group

有趣的是,当使用PhantomJS在Karma单元测试中运行时,该函数工作正常,不会产生错误


任何洞察都将不胜感激。

您运行什么命令来产生错误-我无法在chrome控制台中重现此错误在使用问题中的“text.match…”示例时发生。如果我手动将转义字符串输入到命令中,它可以正常工作,但在使用字符串.regExpEscape()时失败method.for what value of text?我在chrome控制台中运行了所有这些,并且似乎可以工作-可能错误在于未发布的部分,如果发布完整的样本,它可能是可复制的。我将在JSFIDLE中复制并分享,但我的具体值是“Alumina(AL1100)”for text和“Alumina(”for search.still对我有效:您运行什么命令来产生错误-我无法在chrome控制台中重现此错误在使用问题中的“text.match…”示例时发生。如果我在命令中手动输入转义字符串,它工作正常,但在使用字符串.regExpEscape()时失败method.for what value of text?我在chrome控制台中运行了所有这些,并且似乎有效-可能错误在于未发布的部分,如果您发布完整的样本,它可能是可复制的。我将在JSFIDLE中复制并分享这一点,但我的具体值是文本的“Alumina(AL1100)”和搜索的“Alumina”(“Alumina”)。仍然适用于我:
// Input
Test (

// Output
Test \(