关于正则表达式的问题

q09*_*987 1 regex character-class

我看到了这个说法

$name = ereg_replace("[^A-Za-z0-9.]", "", $name);
Run Code Online (Sandbox Code Playgroud)

[^A-Za-z0-9.]和之间有什么区别[A-Za-z0-9.]

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

然后包括^进入的目的是[]什么?

谢谢

Gum*_*mbo 11

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

所以[abc]匹配要么a,bc[^abc]任何其它字符匹配除a,bc.您的示例代码将删除任何未描述的字符[A-Za-z0-9.].这只留下了人物的角色[A-Za-z0-9.].