博 之 文

以 拼 搏 设 计 梦 想 , 以 恒 心 编 程 明 天
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

常用的正则表达式

Posted on 2012-02-29 15:01  IsNull_Soft  阅读(230)  评论(0)    收藏  举报

常用的正则表达式主要有以下几种:

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

   评注:匹配中文还真是个头疼的事,有了这个表达式就好办了哦
 
   获取日期正则表达式:\d{4}[年|\-|\.]\d{\1-\12}[月|\-|\.]\d{\1-\31}日?
   评注:可用来匹配大多数年月日信息。
 

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

   评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
 

  匹配空白行的正则表达式:\n\s*\r

   评注:可以用来删除空白行
 

  匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? />

   评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
 

  匹配首尾空白字符的正则表达式:^\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{4}-\d{7}|\d{3}-\d{8}

   评注:匹配形式如 0511 - 4405222 或 021 - 87888822
 

  匹配腾讯QQ号:[1-9][0-9]\{4,\}

   评注:腾讯QQ号从1000 0 开始
 

  匹配中国邮政编码:[1-9]\d{5}(?!\d)

   评注:中国邮政编码为6位数字
 

  匹配身份证:\d{17}[\d|X]|\d{15}

   评注:中国的身份证为15位或18位
 

  匹配ip地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\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个英文字母或者下划线组成的字符串

 

  评注:最基本也是最常用的一些表达式

 

  Function IsRegu(Regu,s)

  '正则表达式校验

   If Regu="" Then
   Exit Function
   End if
   Dim Re,Sre
   Set Re = New RegExp
   Re.Pattern = Regu
   Sre = Re.Test(s)
   If Sre = True Then
   IsRegu = True
   Else
   IsRegu = False
   End If
   End Function
   tmp=" "
   if (IsRegu("\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",tmp )) =false then
 
   msgbox "E-mail地址不合法 !"
 
   FieldCheck#N=false
 

  end if

 

  不同的语言(如PHP和JAVA)、相同语言的不同类库(如来自Sun的Java Regular Expression类库跟Apache Jakarta的正则表达式类库)间,用法会有所差别,在使用的时候,要注意这些差别。

 

 

 

 

 

 

1.验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;

 

  2.验证电话号码:("^(\d{3.4}-)\d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;

 

  3.验证身份证号(15位或18位数字):("^\d{15}|\d{18}$");

 

  4.验证Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");

 

  5.只能输入由数字和26个英文字母组成的字符串:("^[A-Za-z0-9]+$") ;

 

  6.整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$

 

  7.只能输入数字:"^[0-9]*$"。

 

  8.只能输入n位的数字:"^\d{n}$"。

 

  9.只能输入至少n位的数字:"^\d{n,}$"。

 

  10.只能输入m~n位的数字:。"^\d{m,n}$"

 

  11.只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。

 

  12.只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。

 

  13.只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。

 

  14.只能输入非零的正整数:"^\+?[1-9][0-9]*$"。

 

  15.只能输入非零的负整数:"^\-[1-9][]0-9"*$。

 

  16.只能输入长度为3的字符:"^.{3}$"。

 

  17.只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。

 

  18.只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。

 

  19.只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。

 

  20.验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。

 

  21.只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"

 

  22.验证URL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。

 

  23.验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。

 

  24.验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。

 

  .(小圆点)

 

  匹配除换行符号外的任意字符

 

  \w

 

  匹配字母、数字、下划线

 

  \s

 

  匹配任意空白字符

 

  \d

 

  匹配数字

 

  \b

 

  匹配单词的开始或结束

 

  ^

 

  匹配字符串的开始,或排除

 

  $

 

  匹配字符串的结束

 

  以上都是单个字符匹配

 

  如果要求匹配元字符中的符号,则需要加反斜杠。例如\+表示匹配加号

 

  wqe.eew.rt和wqe\.eew\.rt*

 

  重复零次或多次

 

  +

 

  重复一次或多次

 

  ?

 

  重复零次或一次

 

  {n}

 

  重复n次

 

  {n,}

 

  至少重复n次

 

  {n,m}

 

  重复n到m次

 

  \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

 

  ^w{3}\..+\.\w+$

 

  []

 

  表示匹配中括号中的任一字符

 

  ()

 

  小括号内的为一个整体

 

  |

 

  前后两者任意匹配一种

 

  \(?0\d{2}[)-]?\d{8}

 

  (\(0\d{2}\)\d{8})|(0\d{2}-\d{8})|0\d{2}\d{8}

 

  \W:与\w相反

 

  \S:与\s相反

 

  \D:与\d相反

 

  \B:与\b相反

 

  [^something]:与[something]相反

 

  0\d{2}-\d{8}

 

  \b\w{6}\b

 

  ^\w+

 

  <a[^>]+>

 

  Windows98|Windows2000|WindosXP

 

  ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

 

  ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

 

  ^\+?[1-9][0-9]*$和^\-[1-9][]0-9“*$

 

  ^[A-Za-z]+$和^[A-Z]+$和^[a-z]+$

 

  ^[a-zA-Z]\w{5,15}$