(?= [A-Z])正则表达式如何与split()函数一起使用?

时间:2017-07-05 05:22:30

标签: regex

我试过

var str = "thisIsATest";

var newStr = str.split(/(?=[A-Z])/);

console.log(newStr);

根据我的意愿得出结果:

['this', 'Is', 'A', 'Test']

但是

的功能
?= is  

x(?=y)  

仅当x后跟y时匹配x。

所以不应该在每个单词的最后一个字母处分开。

['thi', 'I', '', 'Test']

这样的事情......或不是。

因为如果我做split(' ');它会在每个"空间分开#34;

1 个答案:

答案 0 :(得分:0)

当你试图分裂时,不要想象它会看到每个角色。相反,试着想象它有点像游标,来自:

|thisIsATest

为:

thisIsATest|

它像光标一样工作的原因是因为你告诉它匹配每个空字符串"",所以很明显,你只需要考虑字符之间的东西。

每次移动时,?=都会告诉它前方的角色,而不是向前移动。如果前面的字符与[A-Z]匹配。如果匹配,则拆分字符串!

下面:

this|IsATest

光标后的字符为I,因此匹配并分割。

它也分成以下几个位置:

thisIs|ATest
thisIsA|Test