月光博客

青青子衿, 悠悠我心, 但为君故, 沉吟至今

« 最糟糕的五百个用户密码安妮宝贝和亦舒 »

常用正则表达式

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

匹配中文字符的正则表达式: [\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个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

原载地址:http://lifesinger.3322.org/myblog/?p=185



原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/433.html
  • 文章排行:
  • 1.psdshow
  • 正好用的着
    我转到我的网站上去了
    不介意吧?呵呵
  • ip: 58.61.232.*  2006-10-12 11:04:02   回复该留言
  • 3.桥丹
  • 好的很,不打篮球就做下网站啊,什么的
  • ip: 221.237.94.*  2006-12-26 22:19:00   回复该留言
  • 5.hehe
  • 匹配ip地址:\d+\.\d+\.\d+\.\d+是不是有问题啊,
    我要是454444.444444.4444444.3435345也能匹配?
    谢 于 2009-5-31 13:14:49 回复
    写的不错,有的地方如果不是专业的就会看不懂!
    我已经收藏!
    谢 于 2009-5-31 13:16:49 回复
    没有问题,在{}中是长度你可以试一下!
  • ip: 58.51.89.*  2007-4-27 11:23:11   回复该留言
  • 7.匹配ip地址
  • 匹配ip地址,你试试这个。
    但是还有一个IP格式没有满足,比如:256.275.285.295,我们都知道,IP地址最大是不可以超过255的。请高手指点,有什么办法解决这个问题,先谢谢。
    \b(([0-9]{0,3})\.){3}[0-9]{0,3}\b
  • ip: 61.142.114.*  2007-7-10 11:58:14   回复该留言
  • 8.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]
  • ip: 218.65.110.*  2007-8-30 20:35:21   回复该留言
  • 9.Charles
  • 这个错了
    匹配身份证:\d{15}|\d{18}

    18位身份证号的末位可能是字母
  • ip: 59.44.118.*  2007-9-4 17:44:16   回复该留言
  • 13.iceskysl
  • 好多都不怎么严格的,用的时候还需要留意的,友情提示。
  • ip: 58.60.63.*  2008-1-7 15:00:37   回复该留言
  • 14.baobaoyan
  • (?!^0*$)(?!^0*\.0*$)^\d{1,1}(\d{1,2})?$
    这个判断正整数小于1000的正则表达式
  • ip: 222.90.232.*  2008-5-4 10:14:33   回复该留言
  • 20.123
  • 你的中国身份证号里边少了一个,比如一个人的身份证是
    :12345678901234567x
    你的正则表达式就会验证出错~~!应该怎么加一下呢?
  • ip: 61.49.112.*  2008-10-13 17:07:50   回复该留言
  • 21.海风
  • 0~255 可以这样表示:
    ^2[04]\d|25[0-5]|[01]?\d?\d$

    可是,1~255就不知道怎样表示了?请哪位高手过招!
  • ip: 219.131.210.*  2008-10-13 20:11:12   回复该留言
  • 22.海风
  • 匹配身份证:
    ^\d{14}\w|\d{17}\w$
    或者:
    ^\d{14}\d{3}?\w$

    这样就可以包含象12345678901234567x的内容了!
  • ip: 219.131.210.*  2008-10-13 20:24:31   回复该留言
  • 26.hsf
  • 在第一个公司,天天要来看正则,在第三个公司了,在baidu一搜索又来看了.呵呵.谢谢!
  • ip: 220.231.192.*  2009-2-23 18:54:31   回复该留言
  • 27.aaa
  • 太差了,你都测试过了吗?

    整数不认0
    email输两个@都可以,#!都不报错
  • ip: 210.83.204.*  2009-3-26 15:43:03   回复该留言
  • 30.angeltwb
  • 075588886666,匹配问题,深圳号码
    江苏大 于 2009-7-3 19:30:02 回复
    很好不错
  • ip: 121.37.16.*  2009-6-30 15:16:47   回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 跟随我的推特:跟随我的推特
  • 跟随新浪微博:跟随新浪微博
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过电子邮件订阅本站

站内搜索

热文排行

最新评论及回复

最近发表

网站收藏

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.