【问题标题】:Javascript regex split reject nullJavascript 正则表达式拆分拒绝 null
【发布时间】:2013-05-18 01:38:55
【问题描述】:

是否可以让 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"]
//          ^^

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

【问题讨论】:

  • 匹配除c之外的所有字符序列怎么样?
  • @nathanhayfield 这就是我想要避免的

标签: javascript regex null split


【解决方案1】:

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

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

这将过滤掉虚假的"" 值。

【讨论】:

【解决方案2】:

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

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

// ["bcc", "c", "b"]

【讨论】:

  • 这很好,虽然不像斜眼的回答那么干净
  • @Nope,我把它留在这里是因为你告诉 nathanhayfield 你想避免遍历数组并删除空字符串,这就是 filter 的作用。
猜你喜欢
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 2022-08-06
  • 2011-06-18
  • 1970-01-01
  • 2012-06-29
相关资源
最近更新 更多