如何使用正则表达式删除每行开头的空格?

11

我想要删除每行开头的空格。

每行数据开头都有一些空格,因此数据显示在中间,我想要删除每行开头的空格。

tmp = tmp.replace(/(<([^>]+)>)/g,"")

如何将^\s条件添加到replace()中?

3个回答

30

去除所有前导空格:

str = str.replace(/^ +/gm, '');
正则表达式非常简单——一个或多个空格在开头。更有趣的部分是标志——/g (全局)用于替换所有匹配项而不仅仅是第一个,以及/m (多行)使得插入符号匹配每行的开头而不仅仅是字符串的开头。
工作示例:http://jsbin.com/oyeci4

@kiran - .replace(/[.?]/g, ' ') 可以做到这一点,但那是另一个问题... 你想做什么?首先你要删除空格,然后是 <> 标签,现在又是其他字符... 哦,除非你的字符串很大,否则试图在一行中完成所有操作并没有太大好处。 - Kobi
替换(/[.?]/g, ' '),这个没有给出所需的结果。 - kiran
1
感谢您提供的多行解释。 - wghornsby

11
var text = "          this is a string         \n"+
           "    \t    with a much of new lines     \n";
text.replace(/^\s*/gm, '');

这支持多种不同类型的空格,包括制表符。


@Grabiel 谢谢,它起作用了..你能解释一下那个 'm' 是什么吗?我知道 'g' 是全局的。 - kiran
@kiran m 表示多行模式。 - Alex
如果它有效,@kiran也许可以将其标记为答案。正如Alex所说,m允许解析器将每行视为整个正则表达式。 - Gabriel

1
如果您只需要删除一个空格,那么这个正则表达式就足够了:
^\s

在 JavaScript 中,代码如下:
yourString.replace(/(?<=\n) /gm,"");

我尝试过这个,但我需要从每行中分隔的 \n 中删除。 - kiran
@kiran 所以你想用换行符替换空格? - Alex
这应该只替换换行符后的空格,而不替换 \n。 - BraedenP
JavaScript不支持向后查找。悲伤但却是事实。 - Kobi

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