2013-10-07 2 views
1

Я пытаюсь удалить __dirname из каталога, который мне нужно скопировать (рекурсивно). Я собираю информацию о проблеме:__dirname не работает в regex

console.log(typeof __dirname); // string 
console.log(__dirname); // c:\test 

Мне нужно создать регулярное выражение из строки, которую я получаю из программы. Поэтому я должен использовать RegExp(myString). Я проверяю реальность на jsfiddle, чтобы убедиться, что правильный путь к побегу \ с \/fiddle.

Я запускаю код в браузере, и он работает. Я запускаю код в node.js, и он не работает. Я беру это на extreme, пытаясь удалить RegExp(__dirname) из __dirname.

Если у вас есть строка var s = __dirname.toString() + "myOtherPath/a.cat", как удалить __dirname часть строки из s?

+1

Почему вы не можете использовать только замену или подстроку (dirname_length)? –

+0

im not sure, если используемые мной пути будут отличаться от путей, используемых моим сервером. если они используют пути с разной длиной, они сломаются. – user1873073

+0

Можете ли вы показать свой фактический код, где вы используете 'новый RegExp'? – Brad

ответ

1

Ваш пример регулярного выражения неверен. Регулярное выражение для удаления обратной косой черты. Но сама строка не имеет ни обратной косой черты, ни косой черты.

var y = "c:\y"; 
//"c:y" 

Чтобы правильно добавить обратную косую черту, вы должны

var y = "c:\\y"; 
//"c:\y" 

Ваш пример бы работал в Linux, где разделитель /, который не нужно экранировать. Кроме того, похоже, что вы выполняете замену подстроки вместо замены регулярных выражений. Поэтому достаточно просто указать имя __dirname на замену:

var y = __dirname; 
var z = y.replace(__dirname,"").toString(); 
+0

Если вы хотите найти строку через регулярное выражение, см. Это [вопрос] (http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript) – user568109

+0

это все еще не за работой. http://i.troll.ws/3541c1c5.png – user1873073

+0

@ user1873073 Вы печатаете y, print z. – user568109