2009-10-15 117 views
0

在我的代碼中,我使用了正則表達式,我在某處使用了正則表達式,但我不明白。 :)正則表達式字符過濾器

preg_match("/^[\p{L} 0-9\-]{4,25}$/", $login)) 

p{L}是什麼意思?我知道它的作用 - 包括國家信件的所有角色。

而我的第二個問題,我想清理遊戲聊天的用戶輸入,所以我開始使用上面提到的正則表達式,但我想允許大多數特殊字符。最簡單的方法是什麼?有人已經準備好了正則表達式來做到這一點?

+0

只是澄清:你不確定整個正則表達式做什麼?或者你只是不確定\ p {L}部分? – 2009-10-15 21:58:25

+0

\ p {L}只,其餘部分很簡單 – Thinker 2009-10-15 22:43:06

回答

1

對於\ p請參閱Unicode character properties基本上它需要字符在特定字符類(字母,數字,...)中。

對於你的過濾器,它取決於你想要過濾什麼,但看看Unicode字符類是我認爲的好辦法(單獨添加任何對你有用的字符)。

0

正則表達式表示:

與長度每個串4和25之間,以字母開頭,一個空格,數字或破折號。

\ p {L}意思是:與屬性「L」匹配的字符,其中「L」代表「任何字母」。

要了解正則表達式的工作:

http://en.wikipedia.org/wiki/Regular_expression

http://www.php.net/manual/en/regexp.reference.unicode.php

+0

這是正確的,添加了約束條件,即匹配的字符串必須從測試字符串的開頭開始,並且必須在測試字符串的末尾結束(由於^和$在正則表達式的開始和結束)。 – 2009-10-15 23:16:27

0

如果你想包括大部分人物爲什麼不排除你是不是允許的嗎?

您可以用^你的角色來實現這個目的

[^characters I don't want] 

免責聲明:黑色房源可能不是最好的方法取決於你想做什麼,並具有比白色的更徹底清單。