在我的meteor应用程序中使用Mongodb我正在使用正则表达式进行查询,以检查数据库中是否已有名称或代码可用。在我的字符串中包含所有数字和特殊字符。但是当正则表达式在字符串中找到特殊字符++
时,它会给出错误
Exception while invoking method
'createSubject' SyntaxError: Invalid regular expression: /^C++$/: Nothing to repeat
I20140109-13:15:21.277(5.5)?在新的RegExp()
我的代码是
var code_regex = new RegExp(["^",code,"$"].join(""),"i");
var curr = Meteor.curri.findOne({code: code_regex});
它与字符串工作正常,但我尝试C++
作为代码并产生上述错误。
答案 0 :(得分:1)
你需要转义你的角色,因为 C ++ 是正则表达式的一部分,+
正在查找前一个表达式的更多匹配。
来自:How to escape regular expression special characters using javascript?
RegExp.escape = function(text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};
var code_regex = new RegExp(["^",
RegExp.escape(code),
"$"].join(""),"i");