使用正则表达式拆分camelCase字符串

Ezi*_*zio 4 javascript regex string split camelcasing

我有一个像这样的Camel案例字符串s = 'ThisIsASampleString',我想使用大写字母作为分隔点拆分成一个数组.我期待这个:

['This', 'Is', 'A', 'Sample', 'String']
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的

s = "ThisIsASampleString";
var regex = new RegExp('[A-Z]',"g");
var arr = s.split(re);
Run Code Online (Sandbox Code Playgroud)

但这并没有给我正确的结果,因为它删除了匹配的字符.我得到这个数组作为我的结果["his", "s", "", "tring"].它删除了所有匹配的大写字母.

我应该如何避免这种行为并将匹配的字符保留在我的结果数组中?

Pra*_*lan 6

您的正则表达式将基于大写分割,但结果数组不包括匹配的值.而是使用积极的前瞻断言来断言这个位置.

s = "ThisIsASampleString";
var arr = s.split(/(?=[A-Z])/);

console.log(arr);
Run Code Online (Sandbox Code Playgroud)

正则表达式在这里解释


或者您可以使用String#match方法代替.

s = "ThisIsASampleString";
var arr = s.match(/[A-Z][^A-Z]*/g);

console.log(arr);
Run Code Online (Sandbox Code Playgroud)

正则表达式在这里解释