用正则表达式将所有前导空格替换为某个字符。

4
我正在尝试用某些东西替换字符串中所有前导空格。
这是我目前尝试过的: 链接
var str = '     testing    1   2   3    ',
    regex = /^\s*/,
    newStr = str.replace(regex, '.');

document.write(newStr)

我想要得到这样的结果:
'.....testing    1   2   3    '

我有什么遗漏吗?
4个回答

15

试试这个:

var s = "   a b c";
print(s.replace(/^\s+/, function(m){ return m.replace(/\s/g, '.');}));

这将打印:

...a b c

一个更简短的完全相同解决方案的版本是 STRING.replace(/^\s+/, (s) => (s.replace(/\s/g, '.')) ) - aemonge

1

备选方案(忽略没有非空格字符的字符串)

var newStr = "";
newStr = (newStr = Array(str.search(/[^\s]/) + 1).join(".")) + str.substr(newStr.length);

0

这个怎么样:

/^([ ]+)/

我不确定 \s 是否能解决问题,而一个简单的 应该可以处理这个问题!


这仅仅提供了一个句号 '.testing 1 2 3 '。 - Miriam
抱歉,我需要使用前瞻(look-ahead)来完成这个,稍等 =) - cutsoy
没关系,你应该使用@Bart的解决方案,它非常好用! - cutsoy

0
这是更短的。
var text = "   a b c";
var result = s.replace(/\s/gy, ".");

console.log(result); // prints: "...a b c";

这里解释了它为什么能够工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接