正则表达式 - "没有什么可重复的"

时间:2014-04-29 18:55:12

标签: javascript regex

这是我的正则表达,我相信给了我麻烦:

JavaScript的:

theregex = /\$?\{(\d+)\}/g;

哪个输出:

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

我已经读过需要更多反斜杠以逃避特殊字符 - 这会改变模式吗?

我正在使用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;
        }
...

3 个答案:

答案 0 :(得分:1)

我有同样的错误,在我的情况下是:

var nameToReplaceGloble = /nameToReplace/g;

但是我通过连接字符串来解决它:

var nameToReplaceGloble = "/"+nameToReplace+"/g";

答案 1 :(得分:0)

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

\{\$?(\d+)\}

含义:

var theregex = /\{\$?(\d+)\}/g;

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

答案 2 :(得分:0)

尝试使用这样的锚点来编写正则表达式:

theregex = /^\$?\{(\d+)\}$/g;

这是一个详细的示例: https://javascript.info/regexp-anchors