我正在尝试解析文本行以检索4个版本号:
v.1.7.600.0 - latest | 9.2.6200.0 to 9.2.9999
Run Code Online (Sandbox Code Playgroud)
我希望能够解析这样一行:
['v.1.7.600.0', 'latest', '9.2.6200.0', '9.2.9999']
Run Code Online (Sandbox Code Playgroud)
目前,我有这样的事情:
var line = "v.1.7.600.0 - latest | 9.2.6200.0 to 9.2.9999"
var result = line.split(/ (\||-|to) /g)
console.log(result)Run Code Online (Sandbox Code Playgroud)
我在正则表达式上并不是那么棒,但它匹配所以我不确定为什么它包含在结果中.
你几乎就在那里,只使用一个非捕获组:
var line = "v.1.7.600.0 - latest | 9.2.6200.0 to 9.2.9999";
var result = line.split(/\s+(?:\||-|to)\s+/);
console.log(result);Run Code Online (Sandbox Code Playgroud)
您需要一个非捕获组,因为它split()会将捕获的值提取到结果数组中.
此外,匹配一个或多个空格\s+而不是使用文字空间可能更方便.
此外,/g修饰符是冗余的split(),它是默认行为.
您还可以为单个char分隔符定义一个字符类,并编写更紧凑的/\s+(?:[|-]|to)\s+/正则表达式.