我希望在找到特殊字符时拆分字符串。 我做了这个: preg_split("[\\W]", $str); 但这仍然允许下划线(和可能更多的字符?) 是否可以只允许 a-z A-Z 和数字,然后在不属于这些字符的任何地方分割?
你刚刚回答了你的问题:preg_split('~[^a-z0-9]~i', $str); 请见这个正则表达式演示。 [^a-z0-9]是一个否定的字符类,除了字母a到z(由于有i修饰符,也包括大写字母A到Z)和数字(0-9定义)之外都可以匹配。另一种方法是在否定的字符类中使用POSIX [:alnum:]字符类。'~[^[:alnum:]]~' 注意,使用单字符正则表达式定界符比成对的定界符更容易,我的最爱是~。它在正则表达式模式中很少使用,因此我不需要在我的模式中转义太多内容。请参阅正则表达式演示。