簡體   English   中英

正則表達式(PHP)=>大於或如果不大

[英]Regular Expression (PHP) => greater that or if not

可以使用正則表達式(php),例如'>'或'if not'¿

例如:我有一個5號字符串'XXXXX':'00054','47690','20593'......

我需要一個驗證的正則表達式:

  1. 5個數字
  2. 大於1

我有這個:'/ ^ [0-9] {5} $ /'但不驗證大於'00001'!

我正在尋找像'>'或'如果不是00000'......

謝謝

PS:我知道可以用:if((int)$ string> 1)

當我堅持使用正則表達式時 - 我總是問自己的第一個問題是“我正在描述的是常規語言嗎?” - 回答這個問題的最簡單方法是嘗試繪制一個有限狀態機 - 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]

PS上面的圖片是不完整的,只是為了展示如何啟動有限狀態機的圖示 - 我快速繪制它,因此它沒有雙圓圈來顯示“最終”狀態,樹不是全部低至5位數。 如果你有興趣,我可以完成樹的其余部分,但認為在這種情況下會有點過分。

編輯通過對蜈蚣鴨的需求 - 這是一個更完整的圖紙 更大的有限狀態機

我可以找出兩種方法:

/^(?!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個位置之一中包含一個非零數字。

暫無
暫無

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

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