単語contentの後の指定された文字列内の二重の円記号"\\"を、単一の円記号\だけに置き換えるにはどうすればよいですか?
var a = "blah blah \\ \\ content:\"whiskey \\\\";
次のように表示されます。
var a = "blah blah \\ \\ content:\"whiskey \\";
私は次のことを試みましたが成功しませんでした。
a.replace(/content:*\\\\\"/g, "\\"));
単語contentの後の指定された文字列内の二重の円記号"\\"を、単一の円記号\だけに置き換えるにはどうすればよいですか?
var a = "blah blah \\ \\ content:\"whiskey \\\\";
次のように表示されます。
var a = "blah blah \\ \\ content:\"whiskey \\";
私は次のことを試みましたが成功しませんでした。
a.replace(/content:*\\\\\"/g, "\\"));
正規表現で問題全体に取り組むのではなく、「コンテンツ」の文字列を壊して、右半分を置き換えます。
function fn(x) {
var i = x.indexOf("content");
return x.substr(0,i) + x.substr(i).replace(/\\\\/g, "\\");
}
// this evaluates true
fn("blah blah \\ \\ \\\\ content:\"whiskey \\\\\\\\ \\\\") ==
"blah blah \\ \\ \\\\ content:\"whiskey \\\\ \\"
a.replace(/(content:.*)\\\\/g, "$1\\");
特に問題は"
、正規表現にが.*
含まれていることです。何かを一致させる必要があります。また、後で取得できるように、最初の部分の周りにグループを配置する必要があります。
残念ながら、javascriptのマッチング方法のため、すべての置換が完了するまで、これを複数回実行する必要があります。
置換方法なしでこれを使用してみてください!
a.split('\\\\').join('\\');
そして、結果は次のようになります。
blah blah \ \ content:"whiskey \