记录正则表达式匹配
围观: 146   讨论: 6

   记录正则表达式匹配 [复制链接]

自从用了回复可见的功能
网友们的昵称和邮箱真是千奇百怪啊
所以我还是折腾下吧
把Emlog的评论的昵称和邮箱匹配弄一下吧
默认的Emlog评论表单验证的时候,
它只是做做样子,
基本是昵称和邮箱不为空
控制昵称字符长度
没有具体的
所以还是完善一下吧
来来我们先唠叨一下.

正则表达式的定义

正则表达式是由普通字符和特殊字符(也叫元字符或限定符)组成的文字模板. 如下便是简单的匹配连续数字的正则表达式:

  1. /[0-9]+/  
  2. /\d+/  

“\d” 就是元字符, 而 “+” 则是限定符.

元字符

元字符 描述
. 匹配除换行符以外的任意字符
\d 匹配数字, 等价于字符组[0-9]
\w 匹配字母, 数字, 下划线或汉字
\s 匹配任意的空白符(包括制表符,空格,换行等)
\b 匹配单词开始或结束的位置
^ 匹配行首
$ 匹配行尾

反义元字符

元字符 描述
\D 匹配非数字的任意字符, 等价于[^0-9]
\W 匹配除字母,数字,下划线或汉字之外的任意字符
\S 匹配非空白的任意字符
\B 匹配非单词开始或结束的位置
[^x] 匹配除x以外的任意字符

可以看出正则表达式严格区分大小写.

重复限定符

限定符共有6个, 假设重复次数为x次, 那么将有如下规则:

限定符 描述
* x>=0
+ x>=1
? x=0 or x=1
{n} x=n
{n,} x>=n
{n,m} n<=x<=m
好了言归正传,都说记录,具体我就不说了
  1. if (empty($name)) {  
  2.  emMsg('评论失败:请填写姓名');  
  3. elseif (strlen($name) > 15  || !preg_match('/[\x{4e00}-\x{9fa5}-a-zA-Z0-9]/iu',$name)) {  
  4. emMsg('评论失败:姓名不符合规范');  
  5. elseif (empty($mail) || !preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$mail)){   
  6. emMsg('评论失败:邮件地址不规范或未填写邮件地址', 'javascript:history.back(-1);');  
  7. }  
本文标签: 表达式
本文链接: http://crazyus.us/biaodashi.html
站长声明: 请尊重版权,转载注明出处,谢谢配合!
[查询收录]
点击留个言 / 已有 6 条评论

    感觉匹配邮箱的正则表达式还可以改进一下。

      @Clarke:没必要,这样就可以了

    非常感谢老哥,看完来了点灵感,哈哈哈

      @咪卡博客:有用就好

    看了N久的正则了 还是不会写...只能在网上搜索......

      @龙笑天: 容易混乱! 对我来说

发表评论

XML地图

网站已存活运行:341 天 , 执行: 0.15毫秒

Powered By Typecho

© 2018-2019 疯狂老司机 本模板还在开发阶段