2014-02-20 52 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