我有这个PHP正则表达式:
$username = preg_replace('/[^a-z0-9]/i', '', $username);
仅允许A-Z
和0-9
。如何允许.
,-
和_
?
答案 0 :(得分:9)
您可以使用以下正则表达式:
/[^a-z0-9._-]/i
/[^a-zA-Z0-9._-]/
/[^a-z0-9.\-_]/
我们在哪里
逃避连字符答案 1 :(得分:2)
简单,只需将这些字符添加到正则表达式中
$username = preg_replace('/[^a-zA-Z0-9._-]/','',$username)
。需要被转义,因为它的'matchall'字符 - 最终会被用来定义一个范围(我们当然可以逃脱它)。
答案 2 :(得分:1)
$username = preg_replace('/[^a-z0-9._-]/i', '', $username);
删除不是([^]
)组中任何一个字符的任何内容。请注意,hypern是最后一个,因此它失去了它的特殊含义。
答案 3 :(得分:1)
如果您确切知道需要匹配的内容,只需在字符组中指定即可。破折号需要处于开始或结束。
/[A-Z0-9._-]/
答案 4 :(得分:1)
$username = preg_replace('/[^a-z0-9._-]/i', '', $username);
您当前的代码实际上允许A-Z
和a-z
- i
标记将您的正则表达式标记为不区分大小写。
答案 5 :(得分:0)
$username = preg_replace('/[^a-z0-9._-]/i', '', $username);
答案 6 :(得分:0)
尝试
$username = preg_replace('/[^a-z0-9.-_]/i', '', $username);