在正則表達式(php)中可能有像'>'或'if not'之類的東西嗎?正則表達式(PHP)=>大於或大於
例如:我有一個5號線 'XXXXX': '00054', '47690', '20593' ......
我需要一個正則表達式驗證:
- 5數字
- 大於1
我有這樣的: '/^[0-9] {5} $ /',但不驗證大於 '00001'!
我正在尋找像 '>' 或者'如果不是00000 ...
感謝
PS:我知道這是可以做到的:if((INT)$字符串> 1)
在正則表達式(php)中可能有像'>'或'if not'之類的東西嗎?正則表達式(PHP)=>大於或大於
例如:我有一個5號線 'XXXXX': '00054', '47690', '20593' ......
我需要一個正則表達式驗證:
我有這樣的: '/^[0-9] {5} $ /',但不驗證大於 '00001'!
我正在尋找像 '>' 或者'如果不是00000 ...
感謝
PS:我知道這是可以做到的:if((INT)$字符串> 1)
我可以計算出2種方式:
/^(?!00000)\d{5}$/
這首先檢查開始後面沒有5個零,然後搜索5位數字。
/^(?:[1-9]\d{4}|\d[1-9]\d{3}|\d{2}[1-9]\d{2}|\d{3}[1-9]\d|\d{4}[1-9])$/
這一個檢查5個組合,其中每個組合包含5個位置之一的非零數字。
當我被一個正則表達式困住時 - 我總是問自己的第一個問題是「我正在描述一種常規語言嗎?」 - 回答這個問題最簡單的方法是嘗試繪製一個有限狀態機 - https://en.wikipedia.org/wiki/Finite-state_machine。就你而言,這是可能的,它會給你一個如何編寫正則表達式的答案。這個問題的一個簡單的有限狀態機將首先詢問 - 第一個字符是0還是1-9?如果它的0下降一個路徑(對下一個數字進行類似檢查),如果1-9下降另一個(檢查之後是否有4個數字)。
看到圖片的其餘部分將如何發揮出來,我們可以創建一個正則表達式,看起來像這樣:
[1-9][0-9]{4} | 0[1-9][0-9]{3} | 00[1-9][0-9]{2} | 000[1-9][0-9] | 0000[1-9]
附:上面的圖片是不完整的,只是爲了展示如何啓動有限狀態機 - 我快速繪製它,因此它沒有雙圓圈顯示「最終」狀態,並且樹不完全一致最多5位數字。如果你有興趣,我可以完成樹的其餘部分,但認爲在這種情況下它會過度。
'/ ^(?! 00000)[0-9] {5} $ /' – horcrux
或添加' 1'在一個字符類中大於1,'^(?!0 {4} [01])\ d {5} $'。 – chris85
你爲什麼要這樣做? PHP會爲你自動調整類型,所以''47564'> 47563'返回true。 –