2016-05-10 14 views
1

でスラッシュ、私はちょうど私がいくつかの奇妙な結果を受け付けておりますことをやろうとしながら、すべてのバックが前方スラッシュとスラッシュが、replaceしたかったです。がケースでスラッシュ

試み1:

"\\pest-TS01\Users\pest\Music\musi\New folder".replace(/\\/g, "/") 

上の行は、以下の結果が得られる

"/pest-TS01UserspestMusicmusiNew folder" 

試み2:

var x = new RegExp("\\", "g"); 
"\\pest-TS01\Users\pest\Music\musi\New folder".replace(x, "/"); 

そして、上記のコードは次のエラーをスローし、

Uncaught SyntaxError: Invalid regular expression: //: \ at end of pattern(…)


期待される結果:

"//pest-TS01/Users/pest/Music/musi/New folder" 

誰も私に正確にバックスラッシュにマッチする正規表現を与えることができますか?また、一致するバックスラッシュをスラッシュに置き換える方法についてもお伝えします。そして、私はまだ、私が枠を張った正規表現は正しいと信じていますが、どうしてそれが奇妙にふるまうのですか?


特記事項:

split()とそれに似た何かのように文字列操作を使用して、任意の解決策を提案しないでください。私は正規表現の答えを探していて、私の正規表現が機能していない理由を見つける必要があります。

+1

最初の式はOKですが、文字列はありません。 \\\\ pest-TS01 \\ Users \\ pest \\ Music \\ musi \\新しいフォルダ " –

+0

あなたのパターン[' .replace(/ \\/g、 "/") '] (https://regex101.com/r/bZ0bC8/2)は期待どおりに動作します。 – Shafizadeh

+1

@WiktorStribiżewなぜそれを言うのですか?正しいパターンは、あらゆる種類の文字列に対して機能するはずです。だから*あなたの文字列はOKではありません。*意味がありません。 – Shafizadeh

答えて

2

使用String.raw()は、単一\\\に変換し、最終的に\\

/

string = String.raw`\\pest-TS01\Users\pest\Music\musi\New folder`; 
 
result = string.replace(/\b[\\]{1}\b/g, "/").replace(/\\+/, "/"); 
 
document.write(result);


私は正直バックシングルスで舞台裏を何が起こっているか分かりません - スラッシュ、しかし、私は彼らがエスケープされていると思います。

関連する問題