2017-10-17 65 views
0

我試圖來計算這種情況下正則表達式:正則表達式用或情況

的ID必須以字母「M」,並與3位結束,但三聯零是不允許的。

我已經試過

M(00[1-9]) 

但在阻止三聯零,我怎麼能應付其他數字,這只是工程?

+0

像這樣M([0-9] {2} [1-9]) – Gunner

+1

@Gunner但是,如果前兩位數字不是0,最後一個可能是0,所以該模式不會工作。 –

+0

三重零負的前瞻性。 –

回答

3

最簡單的方法可能是與負前瞻:

M(?!0{3})\d{3} 

[Regex101]

這符合字面M,將檢查接下來的事情是不是三個零,然後匹配三位數。

如果你想阻止一組特定的數字,您可以修改前瞻到(這裏0,2 5,6)檢查特定重複數字:

M(?!([0256])\1{2})\d{3} 

[Regex101]

要檢查所有三位數字,請將[0256]替換爲\d。這個正則表達式對一個數字進行前瞻檢查,然後使用反向引用測試它是否重複兩次。

一個不太冗餘的方法可能是把捕獲組先行外:

M(\d)(?!\1{2})\d{2} 

[Regex101]

這個版本說來捕捉一個數字,確保它不重複兩次以上,然後再捕獲兩個數字。

+0

感謝發佈,將刪除我的。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ對不起,我在手機上,但沒有與應用程序。甚至沒有意識到還有其他答案。 –

+0

非常感謝!不知道那會很複雜。新的正則表達式在這裏。 – NewbieCoder