javascript - 使用 JS split 函数的 RegEx 的不同结果 - 结果中的空字符串

标签 javascript regex string split

我正在尝试使用 JavaScript 中的正则表达式和拆分函数来拆分字符串。 例如,我有一个字符串: olej sojowy、山梨糖醇、czerwień koszenilową 我的正则表达式是:

/, (?!(któ))/g

当我在这里测试时: http://regexr.com/38ps8正如预期的那样,我得到了 2 个匹配项,因此结果我应该在分割后得到 3 个元素。

但是当我尝试在 split 函数中使用这个表达式时:

var parts="olej sojowy, sorbitol, czerwień koszenilową".split(/, (?!(któ))/g);
console.log("Num of elements:" + parts.length); 
console.log(parts.join("!\n!"));

结果不同,它返回数组中的 5 个元素,以及两个额外的空字符串:

Num of elements:5 
olej sojowy!
!!
!sorbitol!
!!
!czerwień koszenilową 

为什么它没有按预期工作?是split功能的问题吗?它使用正则表达式的方式是否与我预期的不同?

编辑: 我还注意到,如果我将正则表达式更改为/,/g,那么我就得到了我想要的(结果中的 3 个元素),但是如果后面有 któ,则还有其他字符串我不想拆分昏迷和空间。那么为什么这个运算符要改变 split 的行为呢?

最佳答案

它完全按照它应该的方式工作。您已使用 , 作为分隔符,因此它为您提供了五个元素:

[1] olej sojowy
[2]   
[3] sorbitol
[4]   
[5] czerwień koszenilową

空元素指示分割所在的位置。

关于javascript - 使用 JS split 函数的 RegEx 的不同结果 - 结果中的空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23455224/

相关文章:

javascript - 在javascript中从数组中删除特定对象

python - 在Python中使用正则表达式查找字符串中以给定子字符串开头和结尾的所有字符串

regex - sed 用特殊字符替换字符串

java - 将编码字符串转换为 Base64 格式时出现未知字符

java - 为另一个字符串的子字符串创建一个新的字符串是多余的吗?

javascript - 如何在for循环中添加jQuery显示/隐藏功能?

javascript - 传单 map 不适合边界

javascript - Ruby on Rails - Bootstrap 轮播按钮不起作用

c# - 用 .Replace() 替换整个单词 using\b 不起作用

regex - 使用 R 查找字符串中的重复模式