如果字符串包含算术运算符,则mongodb中的正则表达式错误

时间:2014-01-09 08:12:48

标签: mongodb meteor mongodb-query meteorite minimongo

在我的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++作为代码并产生上述错误。

1 个答案:

答案 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");