javascript - 使用带有正则表达式的拆分不能正确替换?

标签 javascript regex

我正在尝试解析文本行以检索 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/

相关文章:

python - 正则表达式不能与 python 一起正常工作

javascript - 如何制作一个计数器来检查用户使用java脚本重新加载网页的次数?

javascript - CSS样式信息库

javascript - 命中 FB.init 返回错误 "Polyfill JSON does not have implementation of stringify"

javascript - Puppeteer 等待所有图像加载然后截图

regex - 违反 RegExp : Every string that is smaller or equal "001700"

JavaScript - 获取系统短日期格式

.net - 从youtube链接获取youtube嵌入视频代码?

regex - cloudformation IAM 策略名称的正则表达式是什么

python - {m,n} 不匹配 m 以下但匹配 n 以上。为什么?