javascript 正则表达式将大写字母从小写字母中分离出来

javascript Regex split UpperCase from lowerCase

我得到了一个像这样的字符串:

var str = new Array( 
"Inverted HFFSfor Primary Wrap Or Secondary Multi Wrap",
"HFFSwith PDSPbackgroud Feederlense & Product Alignerigit",
"HFFSwith Cooler JKLHbetween Feeder & Product Aligner")

如何分开,即

1) HFFSfor 变为 HFFS for

2) HFFSwith 成为 HFFS with

3) PDSP 背景 变为 PDSP 背景

4) JKLHbetween 变成 JKLHbetween

等等...

我的第一直觉是这样的:

for(var i = 0; i<_str.length; i++){ 
if( (/*The needed Regex*/).test(_str[i]) ){


     }  
}

没有成功....似乎无法进一步思考!!

请帮忙,谢谢

你可以试试这个,捕获由多个大写字母(作为一组)和小写字母(作为另一组)组成的单词,然后在两组之间添加一个 space:

var str = new Array( 
"Inverted HFFSfor Primary Wrap Or Secondary Multi Wrap",
"HFFSwith PDSPbackgroud Feederlense & Product Alignerigit",
"HFFSwith Cooler JKLHbetween Feeder & Product Aligner")

console.log(
  str.map(s => s.replace(/([A-Z]{2,})([a-z]+)/g, " "))
)

indexOf 不接受 rgex,您可以像这样使用 .replace

您可以使用:

var repl = str.replace(/\B([a-z](?=[A-Z])|[A-Z](?=[a-z]))/g, ' ');

RegEx Demo

正则表达式分解:

  • \B: 断言单词边界不存在的位置
  • (: 开始捕获第 1 组
    • [a-z](?=[A-Z]): 如果前面有大写字母则匹配小写字母
    • |: 或
    • [A-Z](?=[a-z]): 如果前面有小写字母则匹配大写字母
  • ): 结束关闭组#1