2016-04-02 4 views
0

Я пытаюсь сделать регулярное выражение замены:Javascript избежать глобальной замены

referenceNode=referenceNode.replace(/\//g,"\/"); 

Я хочу заменить / для \/, например. Но, // в регулярном выражении делает комментарий в javascript. Как я могу это сделать?

Я установил между / /g, потому что я хочу заменить во всех строках. Может кто-нибудь мне помочь?

+0

Попробуйте сохранить '\ /' в переменной и добавить ее в регулярное выражение. –

+0

Как я могу добавить его? Я не могу назвать var exp = "\ /", а затем заменить (/ exp/g, ...): S Любая идея? @noob – PRVS

+0

Почему бы не использовать регулярное выражение для захвата таких групп, как этот '/ (?: \ /)/g'. Это позволит избежать '//' part. –

ответ

0

Используется:

referenceNode=referenceNode.replace(new RegExp("\\/", "g"),"\\/"); 

Примечание: двойной обратной косой черты (\\) для побега начальный символ обратной косой черты в строке.

Другое примечание:new RegExp("\\/","g") означает то же, что и /\//g.

+1

Спасибо, все отлично! :) – PRVS

+1

Ваша «Другая заметка» неверна. 'new RegExp (" \\/")' означает то же самое, что '/ \ //', а не '/ \\ // g', который является синтаксической ошибкой (точнее, он делит regexp на переменную' g '). Кроме того, объясните, почему буквальное регулярное выражение OP не работает. –

+0

О, да, смутился с косыми чертами: D уже исправлен. Также исправлена ​​часть объяснения. – ForceMagic

2

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

referenceNode = referenceNode.replace(/\//g, "\\/"); 

Вам нужно, чтобы избежать обратной косой черты, потому что обратная косая черта является мета-символ в строке буквального лексем грамматики.

+0

Но первое «//» в первом выражении сделало комментарий в javascript – PRVS

+0

И спасибо за ответ, это тоже было неправильно. Но комментарий я не могу решить. – PRVS

+0

@PRVS Уверяю вас, что '/ \ //' не делает комментарий в JavaScript. Я абсолютно гарантирую это. Перейдите в консоль вашего браузера и введите '/ \ //. Test (« a/b »)', и он выведет «true». – Pointy

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