正则表达式 - “没有可重复的”

Dam*_*mon 5 javascript regex

这是我认为给我带来麻烦的正则表达式:

JavaScript:

theregex = /\$?\{(\d+)\}/g;
Run Code Online (Sandbox Code Playgroud)

输出如下:

Uncaught SyntaxError: Invalid regular expression: /$?\{(\d+)\}/: Nothing to repeat.
Run Code Online (Sandbox Code Playgroud)

我读过有关需要更多反斜杠来转义特殊字符的内容 - 但这会改变模式吗?

我正在使用regex101来帮助 - 它告诉我上面的正则表达式是有效的。显然有些东西认为它不是,而且我对正则表达式还不够熟悉,无法看到它。

编辑: 这是整个代码块。

JavaScript:

foo: function(element, rule) {
    var message = this.defaultMessage(element, rule.method),
       theregex = /\$?\{(\d+)\}/g;

       if (typeof message === "function") {
           message = message.call(this, rule.parameters, element);
       } else if (theregex.test(message)) {
           message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);
       }
       this.errorList.push({
           message: message,
           element: element
        });
        this.errorMap[element.name] = message;
        this.submitted[element.name] = message;
        }
...
Run Code Online (Sandbox Code Playgroud)

Dal*_*rzo 0

我注意到您的示例代码中有此表示法:"{$1}",假设您正在尝试匹配此表达式。你的正则表达式应该是这样的:

\{\$?(\d+)\}
Run Code Online (Sandbox Code Playgroud)

意义:

var theregex = /\{\$?(\d+)\}/g;
Run Code Online (Sandbox Code Playgroud)

免责声明:这个表达式和你的示例中的表达式在我的 Chrome 上都运行得很好。如果您仍然遇到任何错误,请提供浏览器的详细信息。