2016-11-23 205 views
-1

我有一个自动生成的字符串,如下所示:从字符串正则表达式删除字符串

["January","February",null,"April"] 

我需要从字符串中删除的“空”任何比赛,即:

["January","February",null,"April"] --> ["January","February","April"] 

我怎样才能找到除",null"之外的所有东西?

我试过"^(?!,null).*"的变体没有成功。

回答

1

要回答你的问题是说,你不需要正则表达式:

str = str.replace(",null", ""); 

然而,处理边界情况太:

["January","February",null,"April"] --> ["January","February","April"] 
["January",null,null,"April"] --> ["January","April"] 
[null,"January","February","April"] --> ["January","February","April"] 
["January","February","April",null] --> ["January","February","April"] 
[null] --> [] 

可以更好地与正则表达式服务:

str = str.replaceAll("(?<=\\[)null,?|,null", ""); 

更换正则表达式迎合f或第一个(也可能是唯一的)职位,以及任何其他情况。

+0

会不说,还剃掉了项目的尾随报价之前,或该项目的后领先报价它? –

+0

@Joe使用经过测试的解决方案进行编辑。有趣的是,第一位的空值是唯一“有趣”的情况。在其他任何位置,只需删除',null'即可。 – Bohemian

0

请仔细阅读这一块,我们可以使用过滤功能

var arr = [null, "January","February",null,"April", null]; 
 

 
var arr2 = arr.filter(function(x){return x !== null}) 
 

 
console.log(arr,arr2);