用正则表达式拆分驼峰式字符串

Split a camelCase string with regex

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

['This', 'Is', 'A', 'Sample', 'String']

这是我到目前为止所做的

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

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

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

您的正则表达式将根据大写字母拆分,但结果数组不包含匹配值。而是使用 positive look-ahead assertion 来声明位置。

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

console.log(arr);

Regex explanation here


或者您可以使用 String#match 方法。

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

console.log(arr);

Regex explanation here