2010-08-03 49 views
1

我看到這個聲明問題有關正則表達式

$name = ereg_replace("[^A-Za-z0-9.]", "", $name); 

是什麼[^A-Za-z0-9.][A-Za-z0-9.]之間的區別?

根據我對正則表達式的理解,[]用於包含函數ereg_replace中替換的所有有效字符。

那麼將^納入[]的目的是什麼?

謝謝

+3

附註:不推薦使用'ereg_replace',新代碼應該使用'preg_replace'。 – Wrikken 2010-08-03 15:40:55

回答

11

初始^字符類[…]內反轉的集合,這些字符類中描述的字符。當[A-Za-z0-9.]A-Za-z0-9.描述的字符集中的一個字符匹配時,[^A-Za-z0-9.]匹配除A-Za-z0-9.描述的字符之外的任何其他字符。這些其他字符取決於字符串定義的基本字符集。

所以[abc]比賽要麼ab,或c[^abc]任何其它字符匹配除abc。您的示例代碼將刪除[A-Za-z0-9.]未描述的任何字符。只留下[A-Za-z0-9.]的字符。