2012-06-25 101 views
3

因此,我剛剛在PHP中學到了preg_match,現在我正在嘗試preg_match車牌。它應該檢查這個:PHP preg_match汽車車牌

9a-4e-yy,所以一個-和前後的數字或字母,然後-再次和更多的數字或字母。但它必須是兩個相鄰的數字或字母,而不是更多。

現在我有這樣的代碼:

return preg_match("/^([0-9])"."([0-9])"."(\-([0-9])"."([0-9]))"."(\-([0-9])"."([0-9]))$/", $kenteken); 

但在數只檢查。

我希望你們可以幫我把它與字母一起工作。

在此先感謝!

+0

你在哪個縣編碼,車牌字母可能是小寫字母? – mickmackusa

+0

@mickmackusa這個問題是5歲:) IRL牌照不是大寫,但它更方便用戶使用,因爲用戶不必擔心大寫字母,我們可以稍後大寫。這是一個荷蘭牌照btw。 –

回答

6

[0-9]只匹配數字。如果你想匹配數字或字母,那麼你需要[0-9A-Za-z]

一個完整的regex做你想要的是^[0-9A-Za-z]{2}(-[0-9A-Za-z]{2}){2}$

3

你可能想:

preg_match('/^[0-9a-z]{2}-[0-9a-z]{2}-[0-9a-z]{2}$/i', $kenteken); 

[0-9a-z]指任何數字 「0」 至 「9」 或(小寫)字母「a 「通過」z「。 {2}表示完全匹配2個字符。末尾的/i表示不區分大小寫的匹配,所以它也會匹配大寫字母。

+0

這個答案在步驟方面更高效,因爲它不使用捕獲組。不區分大小寫的模式修飾符也是一種邏輯上的改進。爲了減少模式長度,可以使用'\ d'來代替'0-9'。除非另有說明,否則我認爲世界上沒有任何車牌使用小寫字母,所以'/^[\ dA-Z] {2} - [\ dA-Z] {2} - [\ dA-Z] { 2} $ /'會很好。 – mickmackusa