Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Как экранировать слеш в JS

#javascript


Всем привет. Помогите пожалуйста.
Есть вот такой код 

mypath=homeDir.replace(/Applications/test/Contents/Resources/profile/g,"local_images");
alert (mypath);


В нем хочу заменить Applications/AvtoBot_v0.0.1.app/Contents/Resources/profile на
local_images  но вот не знаю как эти / слешы екранировать.  
    


Ответы

Ответ 1



Есть 4 способа экранирования - 3 из них такие же как для строк: обратный слеш: \/ - обычно используется именно он шестнадцатеричный код: \x2F юникодный шестнадцатеричный код: \u002F и четвёртый уникален для регулярок: квадратные скобки: [/] var s = "qwea/bra/brr"; console.log(s.match(/a\/b/g).join(" ")); console.log(s.match(/a[/]b/g).join(" ")); console.log(s.match(/a\x2Fb/g).join(" ")); console.log(s.match(/a\u002Fb/g).join(" "));

Ответ 2



Экранировать слэш (как и многие другие символы) можно через обратный слеш: \/ Также можно использовать спецсимволы: \u002F

Ответ 3



Про экранирование уже всё написали, поэтому дополню другим способом инстанциировать регулярку: new RegExp('Applications/test/Contents/Resources/profile', 'g') Это может стать особенно полезным в String.prototype.replace, потому что строка для замены может быть получена из стороннего источника, а единственный вариант множественной замены предполагает RegExp с флагом global в первом параметре: function escapeRegExp(str) { return str.replace(/[|\\{()[^$+*?.-]/g, "\\$&"); } mypath = homeDir.replace(new RegExp(escapeRegExp(getBasePath()), 'g'), 'local_images'); В этом сценарии необходимо заэкранировать все спецсимволы, что и делает функция escapeRegExp.

Ответ 4



var mypath=homeDir.replace("/Applications/test/Contents/Resources/profile/g","local_images");

Комментариев нет:

Отправить комментарий