2013-09-30 19 views
2

我正在進行國家代碼驗證,我在波蘭工作的是我擁有的正則表達式。所以我正在爲波蘭的國家代碼驗證工作,我正在努力創建

(([0|(\\+)](?=(48)))(?=(\d{11})))|(\d{9})) 

我的目標是把它驗證048123456789+48123456789即國家代碼,九個位數或者如果用戶輸入的只是,九位本地號碼。例如123456789

+4

如果這是一個在德國工作的德國人,並帶有德國人號碼的波蘭人呢?還是捷克的?只是說 - 屁股沒有更大的痛苦,而是一種愚蠢地拒絕我的輸入的形式,僅僅是因爲我碰巧遇到了這種形式的程序員沒有預見到的非標準情況。你確定這是必要的嗎? –

+0

問題是什麼?什麼是問題? – iamnotmaynard

回答

5

你的正則表達式是非常混亂...也許你可以嘗試一個更簡單:

^(?:[0+]48)?\d{9}$ 

^  // Matches beginning of string 
[0+] // Matches 0 or + 
48 // Matches 48 
\d{9} // Matches 9 digits 
$  // Matches end of string 

(?:[0+]48)?現在是一個可選的組。

+1

一如既往的好,簡單。 –

+1

這個正則表達式不會只匹配9個數字:/ – Darka

+1

@Sniffer看,我告訴過你我錯過了一些東西xD – Jerry

2

爲什麼不能簡單地用這樣的:

^((048|\+48|)\d{9})$ 
0

這是編寫它的最短途徑:

^([0+]48)?\d{9}$ 
1

請嘗試這個匹配任何有效格式的

^(((00|\+)48)?-?[0-9]{2}-?[0-9]{3}-?[0-9]{2}-?[0-9]{2}|((00|\+)48)?-?[0-9]{3}-?[0-9]{3}-?[0-9]{3})$

RegEx

相關問題