关于正则表达式的问题

时间:2010-08-03 15:33:22

标签: regex character-class

我看到了这句话

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

[^A-Za-z0-9.][A-Za-z0-9.]之间的区别是什么?

根据我对正则表达式的理解,[]用于包含函数ereg_replace中替换的所有有效字符。

那么将^纳入[]

的目的是什么?

谢谢

1 个答案:

答案 0 :(得分:11)

字符类^内的初始[…]会反转字符类中描述的字符集。虽然[A-Za-z0-9.]匹配A-Za-z0-9.描述的字符集中的一个字符,但[^A-Za-z0-9.]匹配除A-Za-z0-9.描述的字符之外的任何其他字符。这些其他字符的含义取决于字符串定义的基本字符集。

所以[abc]匹配abc[^abc]匹配除a之外的任何其他字符,{{1} }和b。您的示例代码将删除c未描述的任何字符。只留下[A-Za-z0-9.]的字符。