就像我在標題中所說的那樣,我很難寫出這個特殊的正則運算式。任何幫助將非常感激。
我試圖解決這個問題的最佳嘗試是寫這個:
^([0-9]*[1-9][0-9]*)*[02468]$
但是這個正則運算式不能識別像“002”這樣的數字。然后我試過這個:
^([0-9]*[1-9][0-9]*)*[02468]*[02468]$
現在正則運算式識別“002”,但也識別“000”(只有零),我無法避免這種情況發生。
總之,我在撰寫一個可以識別正偶數(包括前導零,但不包括“000” - 只有零的數字)的正則運算式時一次又一次地失敗,例如:
2、001234、00123400、002、20、16等
先感謝您。
uj5u.com熱心網友回復:
您可以對任何數字使用積極的前瞻,除了0
:
^(?=.*[1-9])[0-9]*[02468]$
(?=.*[1-9])
- 任何數字的正向前瞻,除了0
[0-9]*
- 任何數字重復 0 次或更多次[02468]
- 任何偶數
演示
uj5u.com熱心網友回復:
您可以匹配至少一個不為零的數字,或匹配至少 2 個數字,其中第一個數字是 1-9
^(?:[0-9]*[2468]|0*[1-9][0-9]*[02468])$
解釋
^
字串的開始(?:
非捕獲組[0-9]*[2468]
匹配可選數字 0-9,然后是其中之一2
4
6
8
|
或者0*[1-9][0-9]*[02468]
匹配可選零,一個數字 1-9 可選數字 0-9,然后是其中一個2
4
6
8
)
關閉非捕獲組$
字串結束
正則運算式演示
或者,您不僅可以使用否定前瞻斷言字串中的零(?!0 $)
^(?!0 $)[0-9]*[02468]$
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532659.html
標籤:正则表达式
下一篇:具有大量資料的網路爬蟲表