2011-10-07 70 views
4

如果在提供的字符串中沒有字母,我發現這個正則表達式工作正常。正則表達式在字符串的特定位置添加連字符

$string = "12522191813381147500333332228323"; 
echo $formattedString = preg_replace("/^(\d{8})(\d{4})(\d{4})(\d{4})(\d{12})$/", "$1-$2-$3-$4-$5", $string); 

我的輸入字符串有時會混合使用字母和數字。在這兩種情況下,我必須做些什麼才能使其發揮作用。我有其他的選擇來迭代一個字符串,並使用PHP的字符串函數添加破折號,但我想了解我們如何使用正則表達式來實現它。

回答

3

\w還允許下劃線,如果你真的只希望允許字母數字字符,你必須做這樣的事情:

([a-z0-9]{8})([a-z0-9]{4}) 

,包括在正則表達式的結尾i標誌(後最終/)使其不區分大小寫。

+0

+1並感謝不區分大小寫的部分。完全錯過了! –

相關問題