正则表达式为字母数字

时间:2010-03-01 09:35:54

标签: php regex alphanumeric

我有这个PHP正则表达式:

$username = preg_replace('/[^a-z0-9]/i', '', $username);

仅允许A-Z0-9。如何允许.-_

7 个答案:

答案 0 :(得分:9)

您可以使用以下正则表达式:

/[^a-z0-9._-]/i
  • 我最后是制作模式 匹配不区分大小写。您可以 放弃并使用:/[^a-zA-Z0-9._-]/
  • - (连字符)在char类中具有特殊含义,如果它包围在两者上 我们把它放在最后这样 它的字面意思。你也可以 做:/[^a-z0-9.\-_]/我们在哪里 逃避连字符
  • char类中的点不是元 因此,字面意思将被对待 并且无需逃脱。

答案 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-Za-z - i标记将您的正则表达式标记为不区分大小写。

答案 5 :(得分:0)

$username = preg_replace('/[^a-z0-9._-]/i', '', $username);

答案 6 :(得分:0)

尝试

$username = preg_replace('/[^a-z0-9.-_]/i', '', $username);
相关问题