我的php我使用preg_match
來驗證輸入文本。PHP只允許使用pregmatch的字母,數字,空格和特定符號
if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}
但是,這隻允許字母數字和不允許空格。我想要允許空格,字母和數字。和期間(。)和短劃線( - )
請幫我一下嗎?提前致謝。
我的php我使用preg_match
來驗證輸入文本。PHP只允許使用pregmatch的字母,數字,空格和特定符號
if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}
但是,這隻允許字母數字和不允許空格。我想要允許空格,字母和數字。和期間(。)和短劃線( - )
請幫我一下嗎?提前致謝。
這裏唯一的困難位是衝刺。
對於空間和點,你可以簡單地將它們添加到您的字符類,像這樣:
'/^[a-zA-Z0-9 .]+$/'
容易。
由於連字符在像這樣的字符類中具有特殊含義(正如您已經知道的,它們用於範圍字符如a-z
),短劃線會稍微難一些。爲了在字符類中指定連字符,它必須是類中的第一個字符(即它不能在兩個字符之間,否則將被視爲字符範圍標記)。
所以,你的表達應該是:
'/^[-a-zA-Z0-9 .]+$/'
希望有所幫助。
是的,這有幫助。現在我甚至可以進一步理解preg_match函數的正確語法。 – CudoX
如果你想國際化,爲什麼不使用'\ p {N}'而不是'0-9' –
如果你不僅要允許ASCII,然後使用Unicode properties:
preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)
\p{L}
是任何語言的任何字母,也符合中國,希伯來語,阿拉伯語,...字符。
\p{N}
任何數字字符,如果你想限制爲數字,然後用\p{Nd}
剛剛嘗試添加都在你的正則表達式(也意味着如羅馬數字)
。 – Rikesh