2013-04-05 49 views
4

我不確定爲什麼這個正則表達式不起作用。 我想驗證如果輸入的格式如下:正則表達式用於逗號和空間的驗證數字

  1. 12345678,12345678,12345678
  2. * *空間12345678,12345678,12345678,12345678
  3. 12345678,12345678,空間
它必須是8位,如果不會返回錯誤。 下面是我做的正則表達式,但它是爲2組數字工作,但是當我輸入另一組數字驗證不起作用。

  1. 工作:12345678,12345678
  2. 不工作:12345678,12345678,12345678
var validate_numbers = /^\s*\d{8}\s*\+*(,\s*\d{8},*)?$/; 

謝謝

回答

2

你需要描述你想要更詳細地匹配的內容。我假設你想匹配由逗號和加號分隔的8位數字,可能後跟逗號。

問題是你最多需要2組數字。 Visualization

鑑於上述假設的,這是你想要的正則表達式:

^(\s*\d{8}\s*[+,]?\s*)*$ 

同樣,你可以想像它debuggex

+0

哇,debuggex是輝煌的。感謝您的鏈接!我也可以大膽地建議http://gskinner.com/RegExr/。 – Iain 2013-04-05 04:19:26

+0

謝謝!得到它了! – 2013-04-05 04:36:21

+0

嗨,目前這個正則表達式:^(\ s * \ d {8} \ s * [+,]?\ s *)* $驗證上述所有情況。但是當我的字符串是1234567812345678時,它會返回true。我嘗試對其進行編輯。但結果仍然相同。任何想法我怎麼能做到這一點?這樣的代碼可以驗證上面的情況和1234567812345678? – 2013-04-05 10:47:34

0

你能詳細介紹一下這個需求嗎?你需要逗號前有空格嗎?

\\d{8}(?:,\\d{8})*+ 

試一下吧。它的工作正常,需要驗證一個數字列表,它有8位數字,並用逗號分隔。

希望它有幫助

0

從當前正則表達式中刪除'$'。它嚴格匹配行的末尾,這會導致您的表達式在所需的字符串上返回false。下面的代碼返回TRUE爲您提到以前返回FALSE的字符串。

omgerd我寫自動在PHP中的第一反應,這裏是快速JS編輯

var pattern = /^\s*\d{8}\s*\+*(,\s*\d{8},*)?/; 
var data2 = '12345678 , 12345678 ,12345678'; 
if (pattern.test(data2) != 0) { 
    alert("ok"); 
} 

輸出: OK

+0

如果您刪除$,它將匹配無效的字符串,例如8位數字後跟唯一的字母。 – 2013-04-05 05:47:46

相關問題