我試圖產生以下數量範圍的正則表達式以色列郵編...正則表達式爲不同的號碼範圍
這是強制性的,我需要有00001或0000001爲起始號碼
ISRAEL NNNNN 00001 99999
NNNNNNN 0000001 9999999
我與此正則表達式嘗試:^0*[0-9]{5}$|^0*[0-9]{7}$
但它失敗了以下場景。它接受這些不應該是的數字。
0100012
000010121
我試圖產生以下數量範圍的正則表達式以色列郵編...正則表達式爲不同的號碼範圍
這是強制性的,我需要有00001或0000001爲起始號碼
ISRAEL NNNNN 00001 99999
NNNNNNN 0000001 9999999
我與此正則表達式嘗試:^0*[0-9]{5}$|^0*[0-9]{7}$
但它失敗了以下場景。它接受這些不應該是的數字。
0100012
000010121
我認爲,OP試圖問的是怎麼寫的正則表達式保證了所有5或7位數字中至少有一個不是零(可能郵政編碼不能全爲零)。
很顯然,使用正則表達式來做這個W/O要容易得多。分析整數,看看它是否大於零,小於100000或1000000,然後就完成了。當然,如果你想強制你的用戶在代碼前面輸入額外的零......這是你的選擇。如今,用戶甚至還要遵守更加狡猾的要求。
但是,如果你感受到了任務的複雜性的挑戰,並希望它使用正則表達式無論價格來完成,那麼在這裏你去:
^(?:0*[1-9]0*)+$
這將確保的所有字符字符串是數字,並且至少有一個是非零的。另外檢查字符串的長度,你會發現它是否等於7或5.(這是一個相對簡單的方法)。
難的方法:
^\d{4}[1-9]|\d{3}[1-9]\d|\d{2}[1-9]\d{2}|\d[1-9]\d{3}|[1-9]\d{4}$
(這是5位郵政編碼,歡迎您來嘗試把它擴大到7位拉鍊碼):P
嗨wvxvw,表達式^ \ d {4} [1-9] | \ d {3} [1-9] \ d | \ d {2} [1-9] \ d {2} | \ d [ 1-9] \ d {3} | [1-9] d {4} $適用於許多情況,但在以下情況下失敗。如果我在這種情況下輸入值10000,則失敗。 – JayP
這是不可能從你的問題告訴領先的數字是否包括在內,所以這裏的兩個版本:
包括首張數字:
^(00)?0{4}1\s+[0-9]{5}([0-9]{2})?$
如果沒有領先的數字:
^[0-9]{5}([0-9]{2})?$
(00)?0{4}1
意味着「2個可選0
然後4 0
然後1
」[0-9]{5}([0-9]{2})?
意味着「5個數字,然後2個可選位」
我不不知道以色列郵政編碼,但他們看起來不必要的複雜。如果很清楚要實現什麼目標,那麼我認爲正則表達式不會太難。 –
您不能爲第一部分00001或0000001添加支票,然後保留最後一部分嗎?看看你的表情,兩個數字都適用於^ 0 * [0-9] {7} $ – CBredlow
爲了確保我明白,你想要00001後跟5個數字或0000001後面跟7個數字? –