我正在寻找使用JavaScript的最有效方法,将字符串拆分为具有以下条件的子字符串数组。字符串应在从A到G的每个新出现的大写字母处拆分。
例如:
String 1. 'A-7C^6'
String 2. 'Db7 B#4'
String 3. 'Eh6 GoF7'
变为:
Array 1. {'A-7','C^6'}
Array 2. {'Db7','B#4'}
Array 3. {'Eh6','Go','F7'}
我想知道是否存在可以完成此操作的正则表达式拆分,或者我是否必须编写自定义字符串解析器。任何输入将不胜感激。提前谢谢!
答案 0 :(得分:4)
你需要先行零长度的断言:
'A-7C^6'.split(/\s*(?=[A-G])/)
Lookahead asssertion (?=[A-G])
是一种与模式匹配但不包含结果模式的断言。例如,如果您只是将字符串'A-7C^6'
拆分为/[A-G]/
,则结果为["", "-7", "^6"]
。那是因为JS从结果中删除了匹配的字符串。但是/\s*(?=[A-G])/
它仍与[A-G]
匹配,但未在结果中包含它,因此split
不会触及这些字符。