无法通过条件得到正确的结果

时间:2018-04-04 20:27:46

标签: javascript regex replace

我有一个这样的字符串:

  

这是你自己的待办事项清单,不要忘了! ;),N任务状态,0。xcv活动,1。xcv活动(4)

我需要找到此字符串中的所有,(逗号),并用空格替换它们,除非在,之前有y个字母。

为了做到这一点,我创造了一个定期的表达:

let str = 'This your own todos list on the day, don\'t forgot it! ;), N Task Status, 0. xcv active, 1. xcv active (4)';

str.match(/,/g);

但它在字符串中找到了所有,而没有过滤y,的情况。

我也试过这些解决方案:

str.match(/[^y],/g);
str.match(/[^],/g);

但是在替换中插入这些正则表达式时,他们会使用前面的字母修饰逗号

let str = 'This your own todos list on the day, don\'t forgot it! ;), N Task Status, 0. xcv active, 1. xcv active (4)';

alert(str.replace(/([^y]),/g, '\n'));

1 个答案:

答案 0 :(得分:1)

使用str.match(/[^y],/g)实际上会返回所有逗号后面带有字符的逗号。

如果重点是那些逗号,那么实际上不需要其他修改 - str.match(/[^y],/g).length会在y之后返回一些逗号。

如果要删除除y之外的任何字符后出现的逗号,那么你就是这样做的:

let str = 'This your own todos list on the day, don\'t forgot it! ;), N Task Status, 0. xcv active, 1. xcv active (4)';

// count the commas
console.log(str.match(/[^y],/g).length);

// remove commas from the string
console.log(str.replace(/([^y]),/g,"$1 "));