6

是否可以让 JavaScript 正则表达式拒绝空匹配?

可以告诉 String.split() 方法拒绝空值吗?

console.log("abcccab".split("c"));
//result: ["ab", "", "", "ab"]
//desired result: ["ab", "ab"]

-

当我测试这个时,我偶然发现了一个部分答案:

console.log("abccacaab".split(/c+/));
//returns: ["ab", "a", "aab"] 

但是,当比赛开始时出现了一个问题:

console.log("abccacaab".split(/a+/));
//returns: ["", "bcc", "c", "b"]
//          ^^

有明确的答案吗?还是我们只需要处理它?

4

2 回答 2

29

这并不完全是一个正则表达式解决方案,但一个过滤器可以快速完成它。

"abcccab".split("c").filter(Boolean);

这将过滤掉虚假""值。

于 2013-05-22T20:50:16.277 回答
1

在拆分之前从字符串末尾修剪匹配项:

console.log("abccacaab".replace(/^a+|a+$/g, '').split(/a+/));

// ["bcc", "c", "b"]
于 2013-05-22T20:52:27.390 回答