var str = ' Some string ';
var output = str.replace(/^\s|\s(?=\s*$)/g , '_');
输出应如下所示
'___Some string____'
此代码适用于尾随空格,但所有前导空格都只替换为一个下划线。
用于此的工作 php 正则表达式是: /\G\s|\s(?=\s*$)/
var str = ' Some string ';
var output = str.replace(/^\s|\s(?=\s*$)/g , '_');
输出应如下所示
'___Some string____'
此代码适用于尾随空格,但所有前导空格都只替换为一个下划线。
用于此的工作 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));
}