2014-02-20 48 views
1

我想使用正則表達式來分割大寫字符的字符串,但也將它們從小寫字符或數字隔離。Javascript中,分割大寫字符串,並分離大寫

即我試圖把這樣的字符串:

"This is a Test STring"

和它拆分成一個這樣的數組:

("T", "his is a ", "T", "est ", "S", "T", "ring")

我一直在努力調整類似於本例中的正則表達式:
match(/[A-Z]?[^A-Z]*)+/g).slice(0,-1)

回答

0

你可以圍繞上層例意外字符的字符串,然後分割上的字符該字符串:

var s = "This is a Test STring"; 

var array = s.replace(/([A-Z])/g, '___$1___').split('___'); 
+0

我喜歡這個解決方案,因爲那樣你就不用擔心如何處理字符串其他地方的非字母字符 – Homeone9

3

你可以使用這個表達式:

([A-Z]|[a-z ]+) 

工作正則表達式的例子:

http://regex101.com/r/lH6hB0

的Javascript:

var str = "This is a Test STring"; 
var res = str.match(/([A-Z]|[a-z ]+)/g); 

res結果將與值的數組:

"T", "his is a", "T", "est", "S", "T", "ring" 
+1

扭捏了一點,以解決數字 '([AZ] | [ * [AZ] | \ W | [a-z0] +)' – Homeone9

+0

對於*任何*不是帽子:'\ W | [a-z0-9_]',所以要完成這個:'/ [AZ] | \ W | [a-z0 -9_] +/g' - http://jsfiddle.net/mhfaust/Z88XN/ – Faust