正则表达式替换换行符和逗号

时间:2015-06-09 08:16:35

标签: javascript regex replace

我有关于正则表达式的问题,我有一个文本,它看起来如下:

car,model,serie
,Mercedes,324,1,
,BMW,23423,1,
,OPEL,54322,1,

应该看起来像:

car,model,serie
Mercedes,324,1,
BMW,23423,1,
OPEL,54322,1,

所以在文本开头没有逗号。

我尝试了什么:

var str2 = str.replace(/\n|\r/g, ""); 

但不知何故,我无法在正则表达式中添加逗号。

谁能帮助我吗? 提前谢谢。

4 个答案:

答案 0 :(得分:1)

对这个问题有很多回应,对于正则表达式的新手,它可能有点过度镶嵌,

总的来说,最好的回应是:

var str2 = str.replace(/^,/gm, '');

这可以通过使用 ^ 来检查第一个字符是否为逗号,如果是,则删除它。它还使用 g m 标志为每行的第一个字符执行此操作。

如果您对其他版本感到好奇,请继续阅读:

1:

var str2 = str.replace(/^,+/gm, '');

这是一个轻微的变体,因为它会删除每行开头的多个连续逗号,但是根据您的数据集,这不是必需的。

2:

var str2 = str.replace(/\n,/g, '\n');

此版本的工作原理与第一版完全相同,但是它会在每个换行符后面跟一个逗号 \ n ,并将其替换为另一个换行符。

3:

var str2 = str.replace(/(\n|\r),/g, '$1')

此版本与之前的版本相同,但它没有假设换行符是 \ n ,而是捕获任何换行符或回车符,它的工作原理与< strong> m 标志和 ^,

4:

var str2 = str.replace(/\n+|\r+|,+/g,"\n")

最后有这个,这是所有以前的正则表达式的组合,它假设您可能有很多混合的换行符和逗号没有任何文本,并且您想要删除所有这些字符,它对你的例子来说是不必要的。

答案 1 :(得分:1)

尝试:

var str2 = str.replace(/(\n|\r),/g, '$1')

您的逗号实际上位于正则表达式模式之外,因此您离它不远:)

答案 2 :(得分:1)

使用以下语法:

str.replace(/^,/gm, '');

答案 3 :(得分:1)

您可以使用multiline标记并替换前导逗号:

str = str.replace(/^,+/gm);

RegEx Demo