【发布时间】:2015-10-10 06:40:58
【问题描述】:
我正在尝试使用正则表达式代码清除字符串中的所有特殊字符,到目前为止我已经完成了此代码
$data = preg_replace('/[^a-zA-Z0-9]/s', '', $nickname);
但是这段代码清除了包括空格在内的所有内容,我想允许空格和 - 在字符串上签名,那么我应该在那里添加什么?如果这是一个简单的问题,我很抱歉,但我的英语不是很好,而且我找不到我的主要语言的任何资源。有人可以帮我吗?
【问题讨论】:
-
尝试 [a-zA-Z0-9\s-] \s 将允许所有空格(包括制表符等);要只允许“空格键”空间,请在正则表达式中使用文字空间。 - 符号必须放在方括号的最后,否则会被解释为一个范围,如 0-9。
-
@m69
s这里是一个修饰符,但这里没有上下文,因为.没有被使用。 php.net/manual/en/reference.pcre.pattern.modifiers.php -
我很困惑,所以点会是这样吗? $data = preg_replace('/[^a-zA-Z0-9 -]/s\.', '', $nickname);
-
为什么我的昵称不能是++%X?
-
s修饰符是这样的,.包含默认情况下不包含的换行符。您的正则表达式不使用.。来自手册,a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded