2017-02-27 79 views
0

我已經在用連字符或空格連接匹配數字的正則表達式模式前瞻連接匹配的數字,但是我想的不匹配或有四位正則表達式:用連字符或空間的四位

先行
  1. 「123232-453253-535-23」 比賽應該是 「123232-453253-5」

  2. 「123-452-3233-2」 比賽應該是 「123-452-3」

簡單地說,我想要做的就是忽略最後四位數字。

我目前的格局是

(\d[ \d-]{3,}\d)(?=[ \d-]{4})

demo

現在這個人做正確的事情下面的例子。當在最後四個字符

如沒有連字號或空格與之匹配的是

然而,當該字符串是這樣

1234-5678-9我得到的是1234-56

我要達到的是我應該得到最後四位數字而不是最後四位字符

1234-5678-9比賽應該是1234-5 ..

比賽應該是

+0

從兩個字符類中刪除空間 – Bohemian

回答

1

這可能會爲你工作:

(\d[ \d-]{3,}\d)(?=(?:[ -]?\d){4}) 

基本上,前視被改變,以便它匹配四個(非捕獲)可選的分隔符和一個數字,我知道你正在尋找什麼。

+0

這一個工作。 https://regex101.com/r/t2qJuT/6 謝謝@Lucero – Aaron