PHP preg_match正则表达式找到字母数字和空格?

时间:2013-10-26 13:40:22

标签: php regex

当人们注册我的网站时,我会使用此代码验证他们的名字

if (preg_match("[\W]", $name))  
{
$mess = $mess."Your name must contain letters only.<br>";
$status = "NOTOK";
}

这是因为你的实际名字不能包含符号,除非你的父母在为你命名时喝醉了。

但是,这个正则表达式没有检测到空格,你能帮助我吗?

3 个答案:

答案 0 :(得分:1)

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

^[\w ]+$

这匹配单词字符\w和空格的任意组合,但正如其他人所说的那样小心,因为某些名称可能包含其他符号。

所以你可以像这样使用它:

if (preg_match("/^[\\w ]+$/", $name)) {
    // valid name
}
else {
    // invalid name
}

答案 1 :(得分:1)

试试这个:

<?php 

$user_input = 'User_name';

    if (!preg_match('/^[a-z0-9_\s]+$/i', $user_input)) { 
// matches English letters, numbers underscores(_) and spaces

    $mess = $mess."Your name must contain letters only.<br>";
    $status = "NOTOK";
}

?>

答案 2 :(得分:0)

你只是错过了正则表达式分隔符,即使经过10年的编程,我有时也会这样做。

if (preg_match("/[\W]/", $name)) ...