2016-10-12 3 views
0

入力が普通の一重引用符'を含む場合、最初にバックスラッシュをエスケープする必要があるプロトタイプメソッドを作成しようとしています\。 (私はプロトタイプを拡張することは他のほとんどの状況では悪い習慣であることに気付いています。これは単なる実践上の問題です。)正規表現に関連する質問ですが、私はまだ何かが欠けているようです。私の試みの全てにおいて、私は、以下に示すように「エスケープをエスケープ」することはできませんされました:Regexの一重引用符をエスケープすると、repl.itに余分なバックスラッシュが作成されます

String.prototype.escapeQuote = function() { 
     const regex = /\'/g; 
     const str = `${this}`; 
     const subst = `\\'`; 
     const result = str.replace(regex, subst); 
     return result; 
    }; 

    var str = "this method doesn't work..."; 
    str.escapeQuote(); 

私はこのコードを実行すると、私は出力があることを期待:

this method doesn\'t work... 

しかし、私はrepl.it上でそれを実行したときに私が得る出力は次のようになります。

\'substまたはちょうど 'のいずれか(おそらくそれは言うまでもない)は動作しませんを結合
'this method doesn\\\'t work...' 

- いずれかの方法で、結果は次のとおりです。

'this method doesn\'t work...' 

私は正規表現にかなりあいまいですが、改善しようと、私はあなたが提供することができます任意の助けに感謝したい - と、そのことについては、私が見逃している可能性のある関連の答え。

+0

私はあなたが実際に達成したいものをクリアしていませんよ。それぞれのアポストロフィに3つのスラッシュ文字を付けようとしていますか? – Quentin

+0

いいえ\ –

+0

の文字列を返そうとしています。あなたは、stackoverflowのコメント構文でエスケープを変更しました。文字の名前を使って説明してください。 – Quentin

答えて

1

あなたのコードを評価した結果として文字列を表示するとき。

文字列であることを示すために'にラップすることに注意してください。

あなたはこの例では見ることができ、文字列自体にはスラッシュは、ありません:

String.prototype.escapeQuote = function() { 
 
    const regex = /(')/g; 
 
    const subst = `\\'`; 
 
    const result = this.replace(regex, subst); 
 
    return result; 
 
}; 
 

 
const str = `doesn't this sound awesome`; 
 
alert(str + "\n\n" + str.escapeQuote());

-1

正規表現内でエスケープされていない文字列を使用する必要があります。

String.prototype.escapeQuote = function(){ 
 
    return this.replace(/'/g, '\\\''); 
 
} 
 

 
console.log("Try it, it's easier!".escapeQuote());

あなたはその厄介な'\\\''が気に入らない場合は、代わりに"\\'"を使用することができます。このよう

これはうまくいきます。あなたは両方のシングルと二重引用符をエスケープしたい場合


、あなたはこれを使用することができます:あなたが使用しているREPLは文字列を表し方法のレンダリングアーティファクトをだ

String.prototype.escapeQuotes = function(){ 
 
    return this.replace(/["']/g, '\\$&'); 
 
} 
 

 
console.log("Try it, it's easier!".escapeQuotes());

+0

残念ながら、それは動作しません。とにかくありがとう –

+0

@ ZacCollier申し訳ありませんが、巨大な遅延。私は極端に忙しかった。私は答えを修正しました。 –

関連する問題