2012-07-17 273 views
-1

我想檢測用戶選擇的引腳是否包含4個相同的數字,例如1111或2222.我在PHP中使用preg_match。如何使用正則表達式匹配4個重複數字(PCRE)

我該如何改編answer來做到這一點?

+0

看到如何引腳通常不會被嵌入到任何其他的數據,是沒有看到的非正則表達式的方法,如果一個字符串由相同的,重複的值對你更可維護? – hexparrot 2012-07-17 14:50:17

回答

1

從您鏈接到答案適應:

\b(\d)\1{3}\b 

而不是使用\1+將匹配任何數量的第一位數字的重複的,你\1{3}代替它,將只允許重複三次第一個數字,因此在匹配時給你所需的四位數字。

或者如果你喜歡:

\b(\d)\1\1\1\b 
8

你可以使用這個表達式:

/(\d)\1{3}/ 

這符合一個單一的數字(\d),然後匹配相同數字的3倍\1{3}

+5

這被稱爲反向引用http://php.net/manual/en/regexp.reference.back-references.php – Waygood 2012-07-17 14:50:01

+2

非常優雅的解決方案。 – Horen 2012-07-17 14:51:04

2
count(array_unique(str_split($pin))) > 1 
+1

我喜歡這個解決方案,但是你必須確保'$ pin'事先只包含數字,它的長度是4.否則,像'aaaa'和甚至'1'這樣的東西都會被驗證。 – nickb 2012-07-17 14:53:56

+0

不錯的一個,雖然我覺得很奇怪,你需要一個正則表達式或3個字符串(或更多?)函數來檢查4個重複數字。我原以爲這會更簡單... – jeroen 2012-07-17 14:55:06

+0

@nickb一個pin通常只有4個數字,但我想這可能會有所不同。 – 2012-07-17 14:58:10

相關問題