码迷,mamicode.com
首页 > 其他好文 > 详细

开发:记我的第一个正则表达式

时间:2015-10-04 06:44:25      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

这是我第一次手写正则表达式,以前都是从网上直接Copy能用就好,这几天受到N多因素的影响,决定对不掌握的东西一边开发一边学习,虽然耗时比以前久一些,但是的确感觉很充实,而且学到东西的成就感很好。

 

 

/^[0-9a-zA-Z\x{4e00}-\x{9fa5}]+$/u

 

 

开头的 / 是PHP正则表达式的开头标记,一定要写


^ =  匹配字符串的开始


[ = 匹配字符类内容开始,] 就是结束


0-9 = 允许0-9字符串


a-z = 允许a-z小写字符串


A-Z = 允许A-Z大写字符串


\x{4e00} = 中文utf-8编码的开始,\x代表十六进制,需要一个花括号把十六进制内容括起来


\x{9fa5} = 中文utf-8编码的结束


+ = 重复一次或更多次,表示全部字符串要符合匹配规则


$ = 保证匹配到结尾


/u = PHP特有的一个正则表达符号,用来保证编码的。(PCRE_UTF8)此修正符启用了一个PCRE中与Perl不兼容的额外功能。模式字符串被当成UTF-8。本修正符在Unix下自PHP 4.1.0起可用,在win32下自PHP 4.2.3起可用。自PHP 4.3.5起开始检查模式的UTF-8合法性。这正是正确匹配所必须的。其实也想提醒一下,是utf-8环境使用元字符匹配字符串最好加上修正符u,这只是经验。

 

 

调用代码:preg_match(‘/^[0-9a-zA-Z\x{4e00}-\x{9fa5}]+$/u‘, $str); // 允许中文或英文或数字和中英数任意组合

 

 

是不是很简单?本文引用了如下资料,在此表示感谢:


   《正则表达式30分钟入门教程》 —— http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

   《用PHP正则表达式匹配中文》 —— http://hsl46346.blog.163.com/blog/static/177640502010427102522815/

开发:记我的第一个正则表达式

标签:

原文地址:http://www.cnblogs.com/cnmlgb/p/4854118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!