首页 > 解决方案 > 正则表达式文本替换使用 | 和 () 捕获问题

问题描述

我正在使用 javaScript RegEx 文字来替换字符串的一部分,我想使用 | 检查可能出现的不同类型的模式和 () 捕获我想要替换的匹配部分。不过好像没用,这是为什么呢?

这是我目前的正则表达式:

testText.replace(/(\w)\s+\w$|(\w)\s+$|\w+(\w)$/g, "$1...")

我猜它有问题:这是我想要实现的目标:

给定“x x”,我期望:

  "x..."

给定“x”我期望:

   "x...

给定“werfdsdfasd”(没有空格的单词)我期望:

   "werfdsdfasd..."

标签: javascriptregex

解决方案


问题是您有 3 个捕获组,并且您总是引用第一个。

尝试这个:(\w+)(?:\s+\w$|\s+$|$)

演示


推荐阅读