var str = ' Some string ';
var output = str.replace(/^\s|\s(?=\s*$)/g , '_');
输出应该如下所示
'___Some string____'
此代码适用于尾随空格,但所有前导空格都只用一个下划线替换。
正在使用的php正则表达式为:/\G\s|\s(?=\s*$)/
答案 0 :(得分:7)
不漂亮,但完成工作
var str = " Some string ";
var newStr = str.replace(/(^(\s+)|(\s+)$)/g,function(spaces){ return spaces.replace(/\s/g,"_");});
答案 1 :(得分:1)
有效 ,但我不喜欢它:
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's answer。
答案 2 :(得分:0)
另一个reg ex
var str = " asdf "
str.replace(/^[ ]+|[ ]+$/g,function(spc){return spc.replace(/[ ]/g,"_")})
//"__asdf_______"
答案 3 :(得分:0)
使用 String.prototype.repeat()
现在可以将接受的答案改进为
function replaceLeadingAndTrailingWhitespace(text, replace) {
return text.replace(/^\s+|\s+$/g, (spaces) => replace.repeat(spaces.length));
}