月光博客 » 编程开发 » 常用正则表达式

常用正则表达式

  正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

  正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

常用正则表达式

  匹配中文字符的正则表达式: [\u4e00-\u9fa5]
  评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

  匹配双字节字符(包括汉字在内):[^\x00-\xff]
  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

  匹配空白行的正则表达式:\n\s*\r
  评注:可以用来删除空白行

  匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

  匹配首尾空白字符的正则表达式:^\s*|\s*$
  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

  匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  评注:表单验证时很实用

  匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
  评注:网上流传的版本功能很有限,上面这个基本可以满足需求

  匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  评注:表单验证时很实用

  匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
  评注:匹配形式如 0511-4405222 或 021-87888822

  匹配腾讯QQ号:[1-9][0-9]{4,}
  评注:腾讯QQ号从10000开始

  匹配中国邮政编码:[1-9]\d{5}(?!\d)
  评注:中国邮政编码为6位数字

  匹配身份证:\d{15}|\d{18}
  评注:中国的身份证为15位或18位

  匹配ip地址:\d+\.\d+\.\d+\.\d+
  评注:提取ip地址时有用

  匹配特定数字:
  ^[1-9]\d*$    //匹配正整数
  ^-[1-9]\d*$   //匹配负整数
  ^-?[1-9]\d*$   //匹配整数
  ^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
  ^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
  ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
  ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
  ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
  ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
  ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
  评注:处理大量数据时有用,具体应用时注意修正

  匹配特定字符串:
  ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
  ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
  ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
  ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
  ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
  评注:最基本也是最常用的一些表达式

常用正则表达式

顶一下 ▲()   踩一下 ▼()

相关文章

  1. 1
    yunlingye   说道:
    感觉不是说的那么好,比如匹配ip,就没弄具体一点,
    还有身份证,感觉就是错的(最后一位可以为x)
    支持(22反对(10回复
  1. 2
    webkight   说道:
    0-255匹配:
    25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]
    简化为
    25[0-5]|2[0-4][0-9]|(1[0-9]|[1-9])?[0-9]
    支持(21反对(11回复
  1. 3
    Ni   说道:
    说好的可以说是完全不懂正则 表达式的。。
    俺虽然不是高手,但是都看得出来,不怎么好。。
    支持(14反对(4回复
  1. 4
    wuming   说道:
    正则写的很屎
    支持(18反对(10回复
  1. 5
    无纺布袋   说道:
    谢谢分享...
    支持(16反对(10回复
  1. 6
    这个不错   说道:
    正式我想要的哈,谢谢了
    支持(15反对(9回复
  1. 7
    Jlang   说道:
    什么是正则啊?
    支持(11反对(5回复
  1. 8
    小静   说道:
    不是很专业,有些匹配条件不严谨
    支持(15反对(10回复
  1. 9
    chenfen   说道:
    谢谢,找了好久
    支持(11反对(8回复
  1. 10
    邹勇   说道:
    好文值得收藏!
    支持(12反对(9回复
  1. 11
    不好   说道:
    怎么没有匹配网址的?
    支持(13反对(10回复
  1. 12
    clovery   说道:
    谢谢,转载了。不过有些关于中文的正则需要在特定编程语言环境下才能正常使用。
    支持(11反对(8回复
  1. 13
    baobaoyan   说道:
    (?!^0*$)(?!^0*\.0*$)^\d{1,1}(\d{1,2})?$
    这个判断正整数小于1000的正则表达式
    支持(13反对(11回复
  1. 14
    aaa   说道:
    不太好~!有些错误~!
    支持(7反对(5回复
  1. 15
    aaa   说道:
    太差了,你都测试过了吗?

    整数不认0
    email输两个@都可以,#!都不报错
    支持(14反对(12回复
  1. 16
    遗忘   说道:
    很有帮助,等待更有帮助的信息
    支持(11反对(9回复
  1. 17
    雷影   说道:
    谢谢博主,转载学习了
    支持(3反对(1回复
  1. 18
    bill   说道:
    不错。
    支持(11反对(10回复
  1. 19
    hehe   说道:
    匹配ip地址:\d+\.\d+\.\d+\.\d+是不是有问题啊,
    我要是454444.444444.4444444.3435345也能匹配?
    1.   说道:
      写的不错,有的地方如果不是专业的就会看不懂!
      我已经收藏!
      支持(0反对(0回复
    支持(10反对(9回复
  1. 20
    chenbo   说道:
    不错,收藏了
    支持(12反对(11回复
  1. 21
    Gavin   说道:
    IP地址的匹配好象不對吧。。
    支持(9反对(8回复
  1. 22
    技术无止境   说道:
    感谢提供,已经搜藏
    支持(10反对(9回复
  1. 23
    热舞   说道:
    妈蛋,试了一下,错的
    支持(5反对(4回复
  1. 24
    桥丹   说道:
    好的很,不打篮球就做下网站啊,什么的
    支持(8反对(8回复
  1. 25
    匹配ip地址   说道:
    匹配ip地址,你试试这个。
    但是还有一个IP格式没有满足,比如:256.275.285.295,我们都知道,IP地址最大是不可以超过255的。请高手指点,有什么办法解决这个问题,先谢谢。
    \b(([0-9]{0,3})\.){3}[0-9]{0,3}\b
    试试可以用不 于 2010-6-3 9:24:45 回复
    \d{1,3}\.{1,3}\.{1,3}\.{1,3}
    php学员 于 2012-10-27 9:31:41 回复
    这个是错误的\d的意思就是[0-9]后面加上{1,3}极有可能大于255
    支持(9反对(9回复
  1. 26
    angeltwb   说道:
    075588886666,匹配问题,深圳号码
    江苏大 于 2009-7-3 19:30:02 回复
    很好不错
    支持(6反对(6回复
  1. 27
    dafeng   说道:
    匹配中文 是错误的
    支持(10反对(10回复
  1. 28
    恳求帮助的人   说道:
    允许输入字母,数字,下划线,.,@
    这个正则表达式怎么写啊?
    支持(9反对(9回复
  1. 29
      说道:
    身份证好像错了
    支持(7反对(7回复
  1. 30
    lidogn   说道:
    怎么去双引号啊
    支持(0反对(0回复
  1. 31
    123   说道:
    你的中国身份证号里边少了一个,比如一个人的身份证是
    :12345678901234567x
    你的正则表达式就会验证出错~~!应该怎么加一下呢?
    支持(7反对(8回复
  1. 32
    海风   说道:
    匹配身份证:
    ^\d{14}\w|\d{17}\w$
    或者:
    ^\d{14}\d{3}?\w$

    这样就可以包含象12345678901234567x的内容了!
    支持(9反对(10回复
  1. 33
    aisinvon   说道:
    貌似很高深啊
    支持(12反对(13回复
  1. 34
    迦叶   说道:
    哎,我一个业余选手都能看出很不专业……
    支持(7反对(8回复
  1. 35
    sky   说道:
    很有帮助,等待更有帮助的信息
    支持(7反对(8回复
  1. 36
    比尔   说道:
    好东西,收藏了!
    支持(10反对(11回复
  1. 37
    ronnie   说道:
    邮编的验证规则是错的,有0开头的邮编
    支持(7反对(8回复
  1. 38
    bbb   说道:
    不是很专业的
    支持(6反对(8回复
  1. 39
    3wdotec   说道:
    最近在学URL重定向,,收藏了,谢谢
    支持(4反对(6回复
  1. 40
    清爽点   说道:
    对研究 mod_rewrite 有用啊
    支持(9反对(11回复
  1. 41
    hsf   说道:
    在第一个公司,天天要来看正则,在第三个公司了,在baidu一搜索又来看了.呵呵.谢谢!
    支持(9反对(11回复
  1. 42
    cvwyg   说道:
    匹配腾讯QQ号:[1-9][0-9]{4,}
    [1-9]{5,}
    支持(7反对(9回复
  1. 43
    huangcheng   说道:
    谢 了,,,,,..
    支持(11反对(13回复
  1. 44
    小时候很帅   说道:
    18位身份证会有X结尾的,最后一位要改下。
    支持(3反对(5回复
  1. 45
    小宝   说道:
    真得很不错,收藏了!
    支持(11反对(14回复
  1. 46
    iceskysl   说道:
    好多都不怎么严格的,用的时候还需要留意的,友情提示。
    支持(7反对(10回复
  1. 47
    走过的路   说道:
    示例?疯狂代码?
    支持(6反对(9回复
  1. 48
    ddddddddddd   说道:
    一看就是抄袭的

    正实数怎么办?例如金融的钱币格式。
    支持(7反对(10回复
  1. 49
    飞得更高   说道:
    如果不回家不要乱写 好么 郁闷
    支持(9反对(12回复
  1. 50
    JetYoung   说道:
    非常感谢月光,帮助很大!
    支持(8反对(11回复
  1. 51
    psdshow   说道:
    正好用的着
    我转到我的网站上去了
    不介意吧?呵呵
    支持(18反对(22回复
  1. 52
    Charles   说道:
    这个错了
    匹配身份证:\d{15}|\d{18}

    18位身份证号的末位可能是字母
    zhenwulv 于 2012-11-2 10:14:18 回复
    \d{15}|\d{18}
    把18改成17后加个x再或一下不就可以了?
    你还是要学点基本的东西。
    支持(6反对(10回复
  1. 53
    hidey   说道:
    测试一下,不好意思。
    支持(10反对(14回复
  1. 54
    originaldream   说道:
    大哥!你真是传说中的牛人。每次困境中找资料,看到你的博客都特亲切。如果有你这样的精神,经常写博客,分享经验。如果有你这么全的计算机知识。该多好!!如果真有你这样的老师,能手把手教计算机,也就不会学的这么痛苦了!!
    支持(8反对(12回复
  1. 55
    sd   说道:
    ds邮编的验证规则是错的,有0开头的邮编
    支持(5反对(12回复
  1. 56
    hideys   说道:
    这个样应该可以把。谢谢。
    支持(8反对(18回复

发表留言