You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式在最后一个字符前插入短横线?

正则实现最后一个字符前插入破折号

要把「Jan104aca」改成「Jan104ac-a」,核心是精准定位最后一个字符前的位置,给你两个简单可行的方案:

方案1:用正向预查定位目标位置

直接用正则 /(?=.$)/ 匹配最后一个字符前的空位,然后把这个位置替换成-就行。

  • 正则解释:(?=.$) 是正向预查,意思是“匹配一个位置,这个位置后面紧跟着任意一个字符,且这个字符是字符串的最后一个”,刚好对应你要插入符号的地方。
  • 示例代码(以JavaScript为例):
    const originalStr = "Jan104aca";
    const modifiedStr = originalStr.replace(/(?=.$)/, "-");
    console.log(modifiedStr); // 输出:Jan104ac-a
    

方案2:捕获最后一个字符再重组

如果遇到不支持正向预查的场景,可以用捕获组的方式:
正则用 /(.)$/,替换为 -$1。

  • 正则解释:(.)$ 会捕获字符串的最后一个字符,$1 代表这个捕获到的字符,替换时在它前面加-就完成了修改。
  • 示例代码:
    const originalStr = "Jan104aca";
    const modifiedStr = originalStr.replace(/(.)$/, "-$1");
    console.log(modifiedStr); // 输出:Jan104ac-a
    

你之前写的 /(?<=.)(?!$) 匹配的是所有非开头、非末尾的中间位置,所以会在每个中间空位都插入符号,这不是你要的效果。上面两个方案都能精准定位到目标位置,直接解决问题。

内容的提问来源于stack exchange,提问作者Dennis K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:47:04