我看到了这句话
$name = ereg_replace("[^A-Za-z0-9.]", "", $name);
[^A-Za-z0-9.]
和[A-Za-z0-9.]
之间的区别是什么?
根据我对正则表达式的理解,[]
用于包含函数ereg_replace
中替换的所有有效字符。
那么将^
纳入[]
?
谢谢
答案 0 :(得分:11)
字符类^
内的初始[…]
会反转字符类中描述的字符集。虽然[A-Za-z0-9.]
匹配A-Za-z0-9.
描述的字符集中的一个字符,但[^A-Za-z0-9.]
匹配除A-Za-z0-9.
描述的字符之外的任何其他字符。这些其他字符的含义取决于字符串定义的基本字符集。
所以[abc]
匹配a
,b
或c
和[^abc]
匹配除a
之外的任何其他字符,{{1} }和b
。您的示例代码将删除c
未描述的任何字符。只留下[A-Za-z0-9.]
的字符。