我認爲這隻發生在我寫正則表達式時。我有一個簡單的正則表達式來驗證一組分頁號碼,以後將提交給數據庫,像5
,10
,25
,50
,100
,250
例如:Preg_match從一些數字中刪除最後的零
/all|5|10|25|50|100|250/
當我進行測試,我的正則表達式以上削減0
僅限數字50,100和但不是從10
!!?
在線例如:
http://viper-7.com/IbKFKw
我在做什麼錯在這裏?這次我錯過了什麼?
我認爲這隻發生在我寫正則表達式時。我有一個簡單的正則表達式來驗證一組分頁號碼,以後將提交給數據庫,像5
,10
,25
,50
,100
,250
例如:Preg_match從一些數字中刪除最後的零
/all|5|10|25|50|100|250/
當我進行測試,我的正則表達式以上削減0
僅限數字50,100和但不是從10
!!?
在線例如:
http://viper-7.com/IbKFKw
我在做什麼錯在這裏?這次我錯過了什麼?
這是因爲在字符串50
中,正則表達式首先匹配5
,這是有效的。在字符串250
中,正則表達式首先匹配25
,這是有效的並在此處結束。
你可以嘗試添加錨點:
/^(?:all|5|10|25|50|100|250)$/
這迫使正則表達式的整個字符串匹配,因此,返回你正在尋找正確的匹配。
它的作品,傑瑞!你是對的!簡直不敢相信!你正在成爲我的個人正則表達大師!非常感謝! –
@IliaRostovtsev這個名字的'傑裏'xD謝謝你,但我認爲我還有很長的路要走,成爲一個正則表達大師^^ – Jerry
我修好了,對不起,傑裏! –
從左到右嘗試替代方案,因此匹配5
優先於50
。但沒有1
從10
中切斷0
。你可以簡單地重新排序:
/all|250|100|50|25|10|5/
或者,選擇添加0
到相關替代品(既然?
是貪婪的,在0
將如果存在匹配):
/all|50?|100?|250?/
或
/all|(?:5|10|25)0?/
如果這不是用於匹配,而是用於驗證(即檢查整個字符串),然後用傑裏的s uggestion和使用錨,以確保周圍有你的電話號碼不希望的字符:
/^(?:all|5|10|25|50|100|250)$/
(當然裏面(?:...)
你也可以使用任我上面的圖案,但現在因爲不完整的比賽是不允許的優先級是無關緊要的。 )
它的工作原理!你是對的!我不知道優先發生在這裏! –
非常感謝您的正確答案,但最重要的是要有詳細的解釋和幫助學習!深深的尊重你們兩個! –