2012-03-03 2 views
0

Я использую метод .replace() в javascript для преобразования сериализованного массива объектов в более простую сериализованную строку. Вот мой код:using regex in .replace() method

b = //string 
b = b.replace(/},{/gi, "},cb,,{"); 
b = b.replace(/}],[{/gi, "},cb,,row,{"); //The error is being thrown for this line 

Когда я запускаю этот код, который я получаю «Неожиданный токен /» ошибку в третьей строке. Почему это? Линия более или менее идентична линии над ней. Пожалуйста, помогите мне понять это.

Примечание: я не могу представить строку без регулярного выражения в качестве аргумента, потому что мне нужна подстрока, которую нужно заменить более одного раза.

ответ

5

В этом контексте открытие [ является специальным символом, обозначающим класс символов. Поскольку после него не возникает ], возникает ошибка.

Вам просто нужно, чтобы избежать [ для вашего регулярного выражения для работы:

b = b.replace(/}],\[{/gi, "},cb,,row,{"); 

Ради последовательности, я бы не колеблясь, чтобы избежать других символов фигурных скобок, так как они являются специальными символами, а также (но в данном контексте разбираются буквально):

b = b.replace(/\}\],\[\{/gi, "},cb,,row,{");