使用正则表达式或自定义字符串解析拆分?

时间:2015-04-20 19:55:26

标签: javascript regex parsing

我正在寻找使用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'}

我想知道是否存在可以完成此操作的正则表达式拆分,或者我是否必须编写自定义字符串解析器。任何输入将不胜感激。提前谢谢!

1 个答案:

答案 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不会触及这些字符。