繁体   English   中英

Javascript RegEx 替换两个特定表达式之间的空格

[英]Javascript RegEx to replace white space between two specific expressions

我试图从字符串中删除空格字符,仅当它位于数字和G字母之间时。

示例文本: XXX YYY AAA 16Gb 16 Gb 16 G 2 G ZZZ

目标结果: XXX YYY AAA 16Gb 16Gb 16G 2G ZZZ

到目前为止,我所拥有的是:

'XXX YYY AAA 16Gb 16 Gb 16 G 2 G ZZZ'.replace(/\d+ gb?/ig, '?')

您可以捕获一个数字和一个空格(或 1+ 个空格)并在右侧声明 G。

在替换中使用组 1 $1并启用/g标志来替换所有匹配项,并可能/i用于不区分大小写的匹配。

(\d) +(?=G)
  • (\d)捕获单个数字
  • +匹配 1+ 个空格
  • (?=G)正向前瞻,在右边断言一个G字符

正则表达式演示

 const regex = /(\d) +(?=G)/g; console.log("XXX YYY AAA 16Gb 16 Gb 16 G 2 G ZZZ".replace(regex, "$1"));

在新版本的 JS 中,我们有前瞻后瞻断言,这意味着您可以:

"XXX YYY AAA 16Gb 16 Gb 16 G 2 G ZZZ".replace( /(?<=\d) +(?=G)/g, "" )

和输出:

"XXX YYY AAA 16Gb 16Gb 16G 2G ZZZ"

其中说(?<=\d) +(?=G)

  • (?<=\d)向后查找单个数字,但将其包含在匹配中
  • +匹配一个或多个空格
  • (?=G)先行查找G但不将其包含在匹配项中

更多的

您可以通过创建 Regex 组轻松实现此目的。 注意围绕数字和“g”的 (),然后通过索引它们在替换 function 中重用它们。

console.log("XXX YYY AAA 16Gb 16 Gb 16 G 2 G ZZZ".replace(/([\d])\s*(g)/ig, '$1$2'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM