2017-07-24 133 views
0

分裂大寫我有一個像字符串:JavaScript的正則表達式從小寫

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爲

2)HFFSwith成爲HFFS與

3)PDSPbackgroud成爲PDSP化背景

4)JKLHbetween成爲JKLH

等之間...

我本能地首先是這樣的:

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


    } 
} 

沒有成功....似乎無法進一步思考!

請幫幫忙,謝謝

+0

你的大寫範圍後沒有'+'嗎? –

+0

經過測試。測試()仍然沒有成功...請刪除您的DownVote。謝謝 – ErickBest

+0

'.replace'方法不接受正則表達式作爲替代參數。 – revo

回答

2

indexOf不接受rgex,你可以使用一個.replace這樣。

您可以使用:

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

RegEx Demo

正則表達式破碎:

  • \B:斷言其中單詞邊界不
  • (的位置:開始捕獲組# 1
    • [a-z](?=[A-Z]):匹配小寫字母前方是否有一個大寫字母
    • |:或
    • [A-Z](?=[a-z]):匹配大寫字母,如果有一個小寫字母提前
  • ):最終收盤組# 1
+1

這工作完美(接受)...請UpVote的問題,因爲它是一個有效的問題SO。感謝 – ErickBest

+1

謝謝,我已經upvoted你的問題:) – anubhava

1

你可以試試這個,這是由多於一個大寫字母(作爲一組)捕獲單詞和小寫字母(如另一組),然後添加之間的空間兩組:

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, "$1 $2")) 
 
)