允许“ - ”和“。”在preg_replace中

时间:2013-12-18 22:12:04

标签: php regex preg-replace preg-match

$username = preg_replace("/[^\p{L}|\p{N}]/u", "", html_entity_decode($username));

这允许$username中的“字母”和“数字”,删除其他所有内容。

但我怎么能在混合中允许 "."点符号?也"-"会很好。

非常感谢!

3 个答案:

答案 0 :(得分:6)

只需将它们添加到角色类中:

$var = 'Василий. Теркин-';
$username = preg_replace('/[^\p{L}\p{N}.-]/u', "", $var);
var_dump($username); // Василий.Теркин-

Demo。我已经删除了|,因为它显然已被字符类覆盖(显然不应该在字符类中用作替换 - 毕竟,类是一个替换)。 )

答案 1 :(得分:3)

.在字符类中没有意义,因此不需要转义。 -无论是第一个还是最后一个角色都没有意义。

$username = preg_replace("/[^a-z0-9.-]/u","",html_entity_decode($username));

答案 2 :(得分:-1)

使用\

逃脱它们

我没有诚实地得到你的正则表达式的其余部分,但这就是你使用特殊字符的方式。

我将使用的正则表达式是:[a-z0-9\-\.](添加不区分大小写的标志)。