首页 > 解决方案 > JS Regex 删除字符串中最后一个连字符后的数字

问题描述

尝试删除最后一个连字符后的数字。我尝试了以下但不工作。

const str = 'HYC-HTY-VB23';
const result = str.toLowerCase().replace(/-\d*$/, "");
console.log('result = ', result);

如果我将它更改为 \w 它会删除最后一个 - 连字符之后的所有值,但我只希望删除最后一个连字符之后的数字。任何人都对正则表达式有任何想法。

谢谢,

标签: javascriptregex

解决方案


另一种选择是使用单个替换匹配1个或多个数字断言除-右侧之外的任何字符,直到字符串末尾使用正向前瞻(?=[^-]*$)

\d+(?=[^-]*$)

正则表达式演示

const str = 'HYC-HTY-VB23';
const result = str.toLowerCase().replace(/\d+(?=[^-]*$)/, "");
console.log('result = ', result);


如果必须存在连字符,您也可以使用

(?<=-[^-]*)\d+(?=[^-]*$)

正则表达式演示


推荐阅读