Всем привет. Помогите пожалуйста. Есть вот такой код
mypath=homeDir.replace(/Applications/test/Contents/Resources/profile/g,"local_images");
alert (mypath);
В нем хочу заменить Applications/AvtoBot_v0.0.1.app/Contents/Resources/profile на local_images но вот не знаю как эти / слешы екранировать.
Есть 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(" "));
Про экранирование уже всё написали, поэтому дополню другим способом инстанциировать регулярку:
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.
Экранировать слэш (как и многие другие символы) можно через обратный слеш: \/
Также можно использовать спецсимволы: \u002F
var mypath=homeDir.replace("/Applications/test/Contents/Resources/profile/g","local_images");
Продвижение своими сайтами как стратегия роста и независимости