2010-07-23 116 views

回答

4

正在使用的正則表達式不允許使用字母;這與你在標題中報道的內容相反。

/[a-z]/i就足夠了,如果你只想接受字母。如果你想允許像à,è或ç這樣的字母,那麼你應該擴展正則表達式; /[\p{L}]/ui應該可以處理所有的Unicode字母。

1

/[^ A-Za-z] * /將匹配除字母之外的所有內容。你不需要指定數字或標點符號。

+0

雖然你說的是真的,但它並不回答這個問題。看kiamlaluno的答案。 – 2010-07-23 02:29:05

+0

其實我對kurrel做的是對的。但是在我問這個問題和在我自己的代碼執行過程中,這是一個錯誤。 - 2對我來說,我的歉意。我的原始正則表達式實際上按需要工作。 – atwellpub 2010-07-23 02:45:29

+0

kiamlaluno的第二個版本對於額外字符來說肯定​​是比較靈活的,但是如果你使用if語句來匹配你不想要的東西,那麼你將會尋找負面信息而不是正面信息。 – kurreltheraven 2010-07-23 03:09:34

0

在字符類裏面,^意思不是。 所以你在尋找不是的一封信。 你想要的東西像

[A-Za-z]+ 
0

你也可以使用簡寫\w一個「單詞字符」(字母數字加_)。當然,一些正則表達式引擎可能會有不同的支持,但如果它是PCRE,它應該可以工作。 See here(在標題「轉義序列」下)。

2
#^[^a-z]+$#i 

你的代碼是正確的,你只需要^和$。所以這意味着全部字符從開始到結束都不允許外部字母表。在這裏,負面比賽比正面比賽更受歡迎。

+0

它的意思是這樣的:if (preg_match('#^[^a-z]+$#i', $string) echo 'outside alphabet found'; iroel 2010-07-23 05:47:24

相關問題