0

当人们注册我的网站时,我会使用以下代码验证他们的姓名:

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

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

但是,此正则表达式不检测空格。我该如何解决?

4

3 回答 3

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";
    }
?>
于 2013-10-26T14:03:26.630 回答
1

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

^[\w ]+$

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

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

if (preg_match("/^[\\w ]+$/", $name)) {
    // valid name
}
else {
    // invalid name
}
于 2013-10-26T13:52:46.493 回答
0

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

if (preg_match("/[\W]/", $name)) ...
于 2013-10-26T14:06:45.117 回答