2014-01-09 4 views
0

using Mongodb в моем приложении 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

Вам нужно избегать ваших символов, потому что 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"); 
+0

Thanx @Akshat, это работает для меня. –

Смежные вопросы