gpt4 book ai didi

javascript - 仅匹配最后一个破折号后的数字的正则表达式

转载 作者:行者123 更新时间:2023-11-30 16:40:23 25 4
gpt4 key购买 nike

我真的很接近,但就是不太清楚最后一件事。我试图让它只匹配没有连字符的数字。

例如,下面在括号中显示了所需的匹配项:

one (no match)
one-1 (1)
one-two (no match)
one-two-2 (2)
one-two-23 (23)
one-two-23456 (23456)
one-two-three (no match)
one-two-three-1 (1)
one-two-three-23 (23)
one-0-two-three-2343 (2343)
one-0-44-2343233 (2343233)
one-0-two-three-234and324 (no match)

到目前为止,我已经尝试了几种模式,结果如下。

这很接近,但匹配包括连字符。​​

-\d+$

我也试过这个,它修复了连字符问题,但只匹配连字符后的 2 个或更多数字。例如,它不会匹配“one-1”中的“1”,但会匹配“one-12”中的“12”。

[^-]\d+$

我想指出,我正在使用 javascript 字符串 replace() 方法。

最佳答案

在支持后视的 PCRE 语言中,您可以简单地进行正向后视:

(?<=-)\d+$

示例:https://regex101.com/r/dW6wP3/1

但由于您使用的是 Javascript(不支持后视),您可以使用捕获组来获取您需要的内容:

(?:-)(\d+)$

示例:https://regex101.com/r/zP1cO6/1

你会像这样使用它:

var text = "one-two-23";
console.log(text.match(/(?:-)(\d+)$/)[1]); // 23

编辑:因为您正在尝试替换,所以事情发生了变化。你需要做:

var text = "one-two-23";
if (/-\d+$/.test(text)) {
console.log(text.replace(/\d+$/, ''));
}

关于javascript - 仅匹配最后一个破折号后的数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com