使用正则表达式拆分字符串,使其成为没有空元素的数组

时间:2012-11-07 11:24:05

标签: javascript regex

在这里,我有一个例子javascipt string:

example_string = "Answer 1| Answer 2| Answer 3|";

我正在尝试使用正则表达式获取这样的数组:

Array ["Answer 1", " Answer 2", " Answer 3"]

我试过了:

result = example_string.split('/[|]+/g');

以及以下模式

'/[|]+/g'
'/[|]+\b/g'
'/[|]+[^$]/g'

我仍然在最后得到一个带有空元素的数组:

 Array ["Answer 1", " Answer 2", " Answer 3", ""]

这给我带来了很多麻烦。有谁知道我在我的模式中犯了什么错误或如何解决它?

2 个答案:

答案 0 :(得分:6)

我总是喜欢匹配我一直讨厌拆分的所有内容,但是:

分裂的正则表达式:(\|(?!$)) DEMO

匹配而不是拆分:

正则表达式:(?:([\w\s]+)\|?)

您甚至可以使用[^\|]+来匹配您必须匹配的内容但是|

DEMO

答案 1 :(得分:3)

没有错。这是绝对正确的行为(split如何知道这不是最后一列具有空值的CSV文件?)。如果您知道您的字符串始终以|结尾,则可以先手动删除最后一个字符串。或者你可以拿走数组的最后一个元素,如果它是空的。但是,我似乎无法(在JavaScript中)告诉内置split函数省略空结果。