可以匹配键盘上所有可见的字符,包括@#¥……&×()等等,反正键盘上看得到的 都匹配,但不包括中文,俄文之类的。。

解决方案 »

  1.   

    $str='~!@#$%^&*()_+0124JHB"你好啊ghjk';
    preg_match_all('/[[:punct:]\w ]/i',$str,$m);
    print_r($m);
      

  2.   

    这个貌似有点问题也.\w这个应该包括中文了?
    preg_match('/^[[:punct:]\w ]$/i',$str)  返回的是0  $str中的中文返回的也是0
      

  3.   

    $str1 = '中文';
    $patten = '/\w/';
    echo preg_match($patten,$str1);
    你试试看
      

  4.   

    键盘上所有可见字符的ASCII 范围是多少 ?可以根据ascii范围来正则匹配键盘上所有可见字符吗?
      

  5.   


    echo的结果是0
    匹配到的结果是:
    Array
    (
    )
      

  6.   

    \w
    匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效
      

  7.   

    试了半天,感觉这个应该行
    $str='~!@#$%^&*()_+0124JHB"ghjk';
    echo preg_match('/^[0-9a-zA-Z[:punct:]]{1,}$/i',$str);
    大家帮我测试一下,看看哪里有遗漏 
      

  8.   

    $str='~!@#$%^&*()_+0124JHB"你好啊ghjk';
    preg_match_all('/[[:punct:]\w ]/i',$str,$m);
    print_r($m);这样没问题
      

  9.   

    我这有问题呢!
    我的代码
    $str='~!@#$%^&*()_+0124JHB"你好啊ghjk';
    preg_match_all('/[[:punct:]\w ]/i',$str,$m);
    echo '<pre>';
    print_r($m);
    echo '</pre>';
    echo preg_match('/[[:punct:]\w ]/i',$str);
    页面输出结果:
    Array
    (
        [0] => Array
            (
                [0] => ~
                [1] => !
                [2] => @
                [3] => #
                [4] => $
                [5] => %
                [6] => ^
                [7] => &
                [8] => *
                [9] => (
                [10] => )
                [11] => _
                [12] => +
                [13] => 0
                [14] => 1
                [15] => 2
                [16] => 4
                [17] => J
                [18] => H
                [19] => B
                [20] => "
                [21] => ä
                [22] => ½
                [23] => å
                [24] => ¥
                [25] => ½
                [26] => å
                [27] => •
                [28] => Š
                [29] => g
                [30] => h
                [31] => j
                [32] => k
            ))1
      

  10.   

    你的环境有点异常 可能是版本、编码方面的问题
    正常情况下\w不可能匹配到中文的呀
    实在不行用 [[:punct:]a-z0-9_]/i 吧
      

  11.   

    的确, 你不会是unicode文件吧.