php/js汉字正则表达式总结

 

js版

匹配中文字符的正则表达式: [/u4e00-/u9fa5]

匹配双字节字符(包括汉字在内):[^/x00-/xff]

 代码如下 复制代码

var reg =  /^[u4e00-u9fa5]+$/;

if(reg.test(str))
{
   alert('汉字的干活');
}

计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;}

php版

php正则匹配汉字!
/^[x{4e00}-x{9fa5}]+$/u

 代码如下 复制代码

 

$action = trim($_GET['action']);
if($action == "sub")
{
    $str = $_POST['dir']; 
    //if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312汉字字母数字下划线正则表达式
    if(!preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str))   //UTF-8汉字字母数字下划线正则表达式
    { 
        echo "您输入的[".$str."]含有违法字符"; 
    }
    else
    {
        echo "您输入的[".$str."]完全合法,通过!"; 
    }
}

当然如果要想字符串全是汉字的GBK2312编码匹配为:

 代码如下 复制代码

$str = "小小子";
if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str)){
print($str."确实全是汉字");
} else {
print($str."这个真 TMD不全是汉字");
}

uft8编码正则

$str = "汉字";
if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str)) {
print("该字符串全部是中文");
} else {
print("该字符串不全部是中文");
}

 

其实只要了解了各个编码的高位与低位的开始与结束,那么自然就可以写出正则,而且直接是十六位的,有啥困难?呵呵。不过要注意,在php里面,表示十六位是用的x。

gbk,gb2312的例子:

 代码如下 复制代码

<?php
$action = trim($_GET['action']);
if($action == "sub")
{
    $str = $_POST['dir'];   
    //if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312汉字字母数字下划线正则表达式
    if(!preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str))   //UTF-8汉字字母数字下划线正则表达式
    {  
         echo "<font color=red>您输入的[".$str."]含有违法字符</font>";  
     }
     else
     {
         echo "<font color=green>您输入的[".$str."]完全合法,通过!</font>";  
     }
}
?>

 

+$/u 的意思:

+ 表示重复1次或多次;
$ 表示匹配末尾;
/ 表示定界符;
u 表示模式字符串被当成 UTF-8;
U 表示第一次匹配后即停止搜索。

要匹配2-4 个,用{2,4}表示。
/^[x{4e00}-x{9fa5}]{2,4}$/u

时间: 2024-10-21 08:56:12

php/js汉字正则表达式总结的相关文章

JS常用正则表达式及验证时间的正则表达式_正则表达式

在这篇文章里,我已经编写了12个超有用的正则表达式,这可是WEB开发人员的最爱哦. 1.在input框中只能输入金额,其实就是只能输入最多有两位小数的数字 //第一种在input输入框限制 <input type="text" maxlength="8" class="form-control" id="amount" style="margin-right: 2px;" value="&q

JS常用正则表达式及验证时间的正则表达式

在这篇文章里,我已经编写了12个超有用的正则表达式,这可是WEB开发人员的最爱哦. 1.在input框中只能输入金额,其实就是只能输入最多有两位小数的数字 //第一种在input输入框限制 <input type="text" maxlength="8" class="form-control" id="amount" style="margin-right: 2px;" value="&q

求帮忙js用正则表达式匹配数字

问题描述 求帮忙js用正则表达式匹配数字 rotate(49deg) //这是要被处理的字符串 49 //这是要处理成的样子 我对js正则不太熟悉,还请专业人员指教 解决方案 <!DOCTYPE html> <html> <head> <script type = "text/javascript"> function getNumList(){ var nums = document.getElementById('numbers').

JS使用正则表达式过滤多个词语并替换为相同长度星号的方法_javascript技巧

本文实例讲述了JS使用正则表达式过滤多个词语并替换为相同长度星号的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"

如何使用JS的正则表达式检查 java中的文档注释? (用于代码高亮)

问题描述 例如:在java 中可以这样写文档注释/***这个是注释**/我想实现的效果是/***这个是注释**/现在我想用JS 的正则表达式 匹配他我写了如下的代码但是就是不起作用,只能匹配 /** 其他剩下的都不能匹配.MultiLineCComments : new RegExp('/\*[\s\S]*?\*/', 'gm'),希望哪为朋友帮帮忙,帮我修改一下这个正则表达式,使其能够正常工作.谢谢!问题补充:其实我这段代码是MultiLineCComments : new RegExp('/

js利用正则表达式检验输入内容是否为网址_javascript技巧

js正则检验输入的是否为网址功能在网页中也是很常见的,友情链接部分.表单填写个人主页的时候,使用JavaScript取验证是否为网址.  这个检验不好写,最好还是使用正则表达式去认证.  规定,输入的东西只能是http://与https://开头,而且必须是网址.  有人说,为何像www.1.com这样的网页不行呢? 这是以免你拿用户输入的东西构造超级链接的时候,a标签中的href属性如果遇不到http://或者https://的东西,那么就会认为是根目录,会在你的网站的网址后面接着写入这个地址

史上最详细的js日期正则表达式分享_正则表达式

最简单的正则 如 : /d{4}-/d{2}-/d{2}但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题..... 对于日期的有效范围,不同的应用场景会有所不同.MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59. UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z. 先考虑与年份无关的前三条规则,年份可统一写作 (?!0000)[0-9]{4} 下面仅考虑月和日的正则 1

JS使用正则表达式除去字符串中重复字符的方法_javascript技巧

本文实例讲述了JS使用正则表达式除去字符串中重复字符的方法.分享给大家供大家参考,具体如下: 这里演示一个简单的JavaScript正则表达式实例,将一串含有重复字符串中的多余字符滤除掉,请运行查看效果. 具体代码如下: <html> <head> <title>利用正则表达法除去字符串中的重复字符</title> </head> <body> <script language="javascript">

JS的正则表达式常用检测代码_正则表达式

JS的正则表达式 //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头.可带数字."_"."."的字串 Java代码 function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[.