zoukankan      html  css  js  c++  java
  • 正则匹配汉字

    正则匹配汉字在不同的编码,不同的程序语言上都有些细微的出入,稍不注意就会得不到正确的结果,特此对比一下 javascript 和 php 的正则匹配汉字,而且 php 中的 gb2312 和 utf-8 两种编码匹配规则还不相同同。
    
    在javascript中,要判断字符串是中文是很简单的:
    
    <script type="text/javascript">
        var str = "我热爱编程";
        if(/^[u4e00-u9fa5]+$/ . test(str)) {
            alert("该字符串全部是中文");
        } else {
            alert("该字符串不全部是中文");
        }
    </script>
    php 匹配 gb2312/gbk 编码汉字的正确写法是:
    
    <?php
        header("Content-type:text/html;charset=gb2312");
        $str = "我热爱编程";
        if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) {// gb2312/gbk
            print("该字符串全部是中文");
        } else {
            print("该字符串不全部是中文");
        }
    ?>
    注:上面的也适用于匹配 gbk 编码汉字,因为 gbk 编码包含了所有 gb2312 编码字符。两种编码的区别请参考:http://blog.csdn.net/raige/article/details/4860035
    
    php 匹配 utf-8 编码汉字的正确写法是:
    
    <?php
        header("Content-type:text/html;charset=utf-8");
        $str = "我热爱编程";
        if(preg_match("/^[x{4e00}-x{9fa5}]+$/u", $str)) { // utf-8
            print("该字符串全部是中文");
        } else {
            print("该字符串不全部是中文");
        }
    ?>
    注意别漏写修饰符 u !关于正则表达式修饰符请参考: http://my.oschina.net/banbo/blog/308073
    
  • 相关阅读:
    使用ANY、Some或All关键字
    Exists 和 Not Exists
    in和not in
    斐波那契数列 迭代与递归效率对比
    欧几里得算法
    递归
    字符长串破解密码
    对return函数的认识
    global与nonlocal关键字总结
    闭包
  • 原文地址:https://www.cnblogs.com/sixiong/p/4921658.html
Copyright © 2011-2022 走看看