这是我认为给我带来麻烦的正则表达式:
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)
我注意到您的示例代码中有此表示法:"{$1}",假设您正在尝试匹配此表达式。你的正则表达式应该是这样的:
\{\$?(\d+)\}
Run Code Online (Sandbox Code Playgroud)
意义:
var theregex = /\{\$?(\d+)\}/g;
Run Code Online (Sandbox Code Playgroud)
免责声明:这个表达式和你的示例中的表达式在我的 Chrome 上都运行得很好。如果您仍然遇到任何错误,请提供浏览器的详细信息。