簡體   English   中英

正則表達式僅匹配最后一個破折號后的數字

[英]Regular expression to match only numbers after the last dash

我真的很親密,但無法完全了解最后一件事。 我試圖讓它只匹配沒有連字符的數字。

例如,以下顯示了括號中的所需匹配項:

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(不支持lookbehinds),因此可以使用捕獲組來捕獲所需的內容:

(?:-)(\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+$/, ''));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM