#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");
Комментариев нет:
Отправить комментарий