我正在尝试构建一个正则表达式来替换在普通文本之间用作分隔符的逗号。
我可以替换的不同方式是有效的:
示例:
"This is a text separated with comma, that I try to fix. , It can be split in several ways.,1234321 , I try to make all the examples in one string,,4321,"
结果:
这是我到目前为止使用Node.js / Javascript的代码:
data.replace(/(\S,\S)|( ,)|(,,)|(,([a-z0-9]))/ig,';')
@torazaburo的答案效果最好,除了几个逗号之间有空格(,,,,)
console.log(str.split(/ +, *|,(?=\w|,|$)/));
答案 0 :(得分:1)
data.replace(/\s*,+\s*/g, ';');
这将产生:
这是一个用逗号分隔的文本;我尝试修复。;它可以通过多种方式拆分。; 1234321;我尝试将所有示例放在一个字符串中; 4321;
这有三个部分:
\s*
:匹配零个或多个空格字符。,+
:匹配一个或多个逗号。\s*
:匹配零个或多个空格字符。相反,如果您想用一个分号替换任意数量的连续逗号:
data.replace(/,+/g, ';');
老实说,我不确定我是否了解你的要求。如果我误解了,请提供您期望的输出字符串。
答案 1 :(得分:1)
var str = "This is a text separated with comma, that I try to fix. , It can be split in several ways.,1234321 , I try to make all the examples in one string,,4321,";
console.log(str.split(/ +, *|,(?=\w|,|$)/));
这将分隔在任何前面有一个或多个空格的逗号,无论后面是什么(并且吃掉前面的空格,如果有的话,跟随空格); 或,任何逗号后跟字母数字或逗号或字符串结尾。
正则表达式没有简单的方法来摆脱结果中的最后一个空字符串,这是由输入末尾的逗号引起的。如果你不想要它,你可以自己摆脱它。
要使用分号重新加入,请添加.join(';')
。