首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于删除字符串中最后连字符后的数字的JS Regex

问用于删除字符串中最后连字符后的数字的JS Regex
EN

Stack Overflow用户
提问于 2021-01-17 04:07:10
回答 4查看 328关注 0票数 2

试图在最后一个连字符之后删除数字。我试了下,但没有工作。

代码语言:javascript
复制
const str = 'HYC-HTY-VB23';
const result = str.toLowerCase().replace(/-\d*$/, "");
console.log('result = ', result);

如果我将其更改为\w,它将删除最后一个连字符之后的所有值,但我只希望删除最后一个连字符之后的数字。任何人在这方面都有任何想法。

谢谢,

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-01-17 04:16:12

这将适用于所有可能的方法。

HYC-HTY-VB23 -> hyc-hty-vb✓

HYC-HTY-23VB -> hyc-hty-vb✓

HYC-HTY-2V3B -> hyc-hty-vb✓

HYC-HTY-2VB3 -> hyc-hty-vb✓

​

代码语言:javascript
复制
const str = 'HYC-HTY-2V3B'; // Even for this
const result = str.toLowerCase().replace(/[^-]+$/, (textAfterHypen) => {
  const withoutNumber = textAfterHypen.replace(/\d/g, "");
  return withoutNumber;
});
console.log('result =', result);

​

一衬垫

​

代码语言:javascript
复制
const str = 'HYC-HTY-2V3B';
const result = str.toLowerCase().replace(/[^-]+$/, t => t.replace(/\d/g, ""));
console.log('result =', result);

​

票数 0
EN

Stack Overflow用户

发布于 2021-01-17 04:10:27

您可以捕获在连字符之后但在字符串结束之前的前导字符,然后用以下字符替换:

​

代码语言:javascript
复制
const str = 'HYC-HTY-VB23';
const result = str.toLowerCase().replace(/(-.*?)\d*$/, "$1");
console.log('result = ', result);

​

如果前面的部分没有任何数字,那么只有字母(例如,以-12VB23结尾是不可能的),(-[a-z]*)\d*$才能工作。

连字符逻辑也可能没有必要--除非您只想从带有连字符的输入中删除数字(并保留其他以数字结尾的输入),否则可以.replace(/\d+$/, '')。

票数 0
EN

Stack Overflow用户

发布于 2021-01-17 11:17:13

另一个选项是使用单个替换匹配1或更多位数来断言除右侧的-以外的任何字符,直到字符串的末尾为止,使用正的查找(?=[^-]*$)。

代码语言:javascript
复制
\d+(?=[^-]*$)

Regex演示

​

代码语言:javascript
复制
const str = 'HYC-HTY-VB23';
const result = str.toLowerCase().replace(/\d+(?=[^-]*$)/, "");
console.log('result = ', result);

​

如果必须有连字符的礼物,您也可以使用

代码语言:javascript
复制
(?<=-[^-]*)\d+(?=[^-]*$)

Regex演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65757231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档