var str = ' Some string ';
var output = str.replace(/^\s|\s(?=\s*$)/g , '_');
出力は次のようになります
'___Some string____'
このコードは末尾の空白に対しては正常に機能しますが、先頭の空白はすべて1つのアンダースコアに置き換えられます。
このために機能するphp正規表現は次のとおりです。 /\G\s|\s(?=\s*$)/
var str = ' Some string ';
var output = str.replace(/^\s|\s(?=\s*$)/g , '_');
出力は次のようになります
'___Some string____'
このコードは末尾の空白に対しては正常に機能しますが、先頭の空白はすべて1つのアンダースコアに置き換えられます。
このために機能するphp正規表現は次のとおりです。 /\G\s|\s(?=\s*$)/
きれいではありませんが、仕事は終わります
var str = " Some string ";
var newStr = str.replace(/(^(\s+)|(\s+)$)/g,function(spaces){ return spaces.replace(/\s/g,"_");});
これは機能しますが、私はそれが好きではありません:
var str = " some string ";
var result = str.replace(/^\s+|\s+$/g, function(m) {
return '________________________________________'.substring(0, m.length);
});
またはより柔軟に:
var str = " some string ";
var result = str.replace(/^\s+|\s+$/g, function(m) {
var rv = '_',
n;
for (n = m.length - 1; n > 0; --n) {
rv += '_';
}
return rv;
});
もちろん、それは洗練される可能性があります。
しかし、私はepascarelloの答えの方が好きです。
別の正規表現
var str = " asdf "
str.replace(/^[ ]+|[ ]+$/g,function(spc){return spc.replace(/[ ]/g,"_")})
//"__asdf_______"
String.prototype.repeat()
受け入れられた答えで今はに改善することができます
function replaceLeadingAndTrailingWhitespace(text, replace) {
return text.replace(/^\s+|\s+$/g, (spaces) => replace.repeat(spaces.length));
}