使用 preg_split 处理所有特殊字符的分割问题

3

我希望在找到特殊字符时拆分字符串。

我做了这个:

preg_split("[\\W]", $str);

但这仍然允许下划线(和可能更多的字符?)

是否可以只允许 a-z A-Z 和数字,然后在不属于这些字符的任何地方分割?

1个回答

5
你刚刚回答了你的问题:
preg_split('~[^a-z0-9]~i', $str);

请见这个正则表达式演示[^a-z0-9]是一个否定的字符类,除了字母a到z(由于有i修饰符,也包括大写字母A到Z)和数字(0-9定义)之外都可以匹配。
另一种方法是在否定的字符类中使用POSIX [:alnum:]字符类。
'~[^[:alnum:]]~'

注意,使用单字符正则表达式定界符比成对的定界符更容易,我的最爱是~。它在正则表达式模式中很少使用,因此我不需要在我的模式中转义太多内容。请参阅正则表达式演示

1
非常详细的回答!我对正则表达式还很陌生,所以不确定是否可能。 - Bart
这里是一个关于“否定字符类”的网络资源链接:http://www.regular-expressions.info/charclass.html#negated。 - Wiktor Stribiżew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接