我正在尝试解析文本行以检索 4 个版本号:
v.1.7.600.0 - latest | 9.2.6200.0 to 9.2.9999
我希望能够将这样的一行解析为:
['v.1.7.600.0', 'latest', '9.2.6200.0', '9.2.9999']
目前,我有这样的事情:
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)
我不太擅长正则表达式,但它匹配,所以我不确定为什么它会在结果中包含它们。
最佳答案
你几乎在那里,只需使用一个非捕获组:
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);
您需要一个非捕获组,因为split()
会将捕获的值提取到结果数组中。
此外,用 \s+
匹配一个或多个空格可能比使用文字空格更方便。
此外,/g
修饰符与 split()
是多余的,它是默认行为。
您还可以为单个字符分隔符定义一个字符类,并编写更紧凑的 /\s+(?:[|-]|to)\s+/
正则表达式。
关于javascript - 使用带有正则表达式的拆分不能正确替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40401466/