2013-10-07 13 views
1

我想從我需要複製(遞歸)的目錄中刪除__dirname。我收集有關該問題的信息:__dirname在正則表達式中不起作用

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

我需要從我從程序中獲取的字符串中創建正則表達式。所以我必須使用RegExp(myString)。我對jsfiddle進行了現實檢查,以確保正確的逃脫方式\是\/fiddle

我在瀏覽器中運行代碼,它的工作原理。我在node.js中運行代碼,它不起作用。我通過嘗試從__dirname中刪除RegExp(__dirname)來將其帶到extreme

如果你有一個字符串var s = __dirname.toString() + "myOtherPath/a.cat"你如何從s中刪除__dirname部分的字符串?

+1

爲什麼你不能只使用替換或子字符串(dirname_length)? –

+0

即時通訊不知道我使用的路徑會不同於我的服務器使用的路徑。如果他們使用不同長度的路徑,它會中斷。 – user1873073

+0

你可以在你使用'new 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

如果你想通過正則表達式搜索一個字符串,看看這個[question](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,打印z。 – user568109