正则表达式应用实例目录

验证数字的正则表达式集 
验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0^\d+$
验证非正整数(负整数 + 0^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01-09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$    正确格式为:0109131。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数   ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数  ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数  ^(-?\d+)(\.\d+)?



Editplus等软件中正则替换技巧
正则表达式应用实例目录
  【1】 正则表达式应用——替换指定内容到行尾 
  【2】 正则表达式应用——数字替换 
  【3】 正则表达式应用——删除每一行行尾的指定字符 
  【4】 正则表达式应用——替换带有半角括号的多行 
  【5】 正则表达式应用——删除空行 
  【6】 正则表达式应用——实例应用 
正则表达式应用实例
  【1】正则表达式应用——替换指定内容到行尾 
  原始文本如下面两行 
  abc aaaaa 
  123 abc 444 
  希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg” 
  即上面的文本最终替换为: 
  abc efg 
  123 abc efg 
  解决: 
  ① 在替换对话框,查找内容里输入“abc.*”,替换内容输入为“abc efg” 
  ② 同时勾选“正则表达式”复选框,然后点击“全部替换”按钮 
  其中,符号的含义如下: 
  “.=匹配任意字符 
  “*=匹配0次或更多 
  注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。 
  【2】正则表达式应用——数字替换 
  希望把 
  asdadas123asdasdas456asdasdasd789asdasd 
  替换为: 
  asdadas[123]asdasdas[456]asdasdasd[789]asdasd 
  在替换对话框里面,勾选“正则表达式”复选框; 
  在查找内容里面输入“([0-9])([0-9])([0-9])”,不含引号 
  “替换为:”里面输入“[\1\2\3]”,不含引号 
  范围为你所操作的范围,然后选择替换即可。 
  实际上这也是正则表达式的使用特例,“[0-9]”表示匹配09之间的任何特例,同样“[a-z]”就表示匹配a~z之间的任何特例 
  上面重复使用了“[0-9]”,表示连续出现的三个数字 
  括号用来选择原型,进行分组,替换时要用 
  “\1”代表第一个“[0-9]”对应的原型,“\2”代表第二个“[0-9]”对应的原型,依此类推 
  “[”、“]”为单纯的字符,表示添加“[”或“]”,如果输入“其它\1\2\3其它”,则替换结果为: 
  asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd 
  功能增强: 
  如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应112312345... 
  大家根据需要定制 
  相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下 
  【3】正则表达式应用——删除每一行行尾的指定字符 
  因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现 
  比如 
  12345 1265345 
  2345 
  需要删除每行末尾的“345” 
  这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下 
  解决: 
  在替换对话框中,启用“正则表达式”复选框 
  在查找内容里面输入“345$” 
  这里“$”表示从行尾匹配 
  如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串 
  a. 选择要操作的行 
  b. 编辑-格式-删除行注释 
  c. 在弹出对话框里面输入要清除的行首字符,确定 
  【4】正则表达式应用——替换带有半角括号的多行 
  几百个网页中都有下面一段代码: 
  <script LANGUAGE="JavaScript1.1"> 
  <!-- 
  htmlAdWH('93163607', '728', '90'); 
  //--> 
  </SCRIPT> 
  我想把它们都去掉,可是找了很多search & replace的软件,都是只能对“一行”进行操作。 
  EditPlus 打开几百个网页文件还是比较顺畅的,所以完全可以胜任这个工作。 
  具体解决方法,在 Editplus 中使用正则表达式,由于“(”、“)”被用做预设表达式(或者可以称作子表达式)的标志,所以查找 
  “<script LANGUAGE="JavaScript1.1">\n<!--\nhtmlAdWH('93163607', '728', '90'.);\n//-->\n</SCRIPT>\n” 
  时会提示查找不到,所以也就无法进行替换了,这时可以把“(”、“)”使用任意字符标记替代,即半角句号:“.”。替换内容为 
  <script LANGUAGE="JavaScript1.1">\n<!--\nhtmlAdWH.'93163607', '728', '90'.;\n//-->\n</SCRIPT>\n 
  在替换对话框启用“正则表达式”选项,这时就可以完成替换了 
  补充: 
  对( ) 这样的特殊符号,应该用\( \)来表示,这也是很标准的regexp语法,可以写为 
  <script LANGUAGE="JavaScript1.1">\n<!--\nhtmlAdWH\('93163607', '728', '90'\);\n//-->\n</SCRIPT>\n 
  【5】正则表达式应用——删除空行 
  启动EditPlus,打开待处理的文本类型文件。 
  ①、选择“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式”复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围”中的“当前文件”,表明对当前文件操作。 
  ②、单击“查找内容”组合框右侧的按钮,出现下拉菜单。 
  ③、下面的操作添加正则表达式,该表达式代表待查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。 
  直接在"查找"中输入正则表达式“^[ \t]*\n”,注意\t前有空格符。 
  (1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。 
  (2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。 
  (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 
  (4)选择“制表符”,添加代表制表符的“\t”。 
  (5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中出现0个或多个。 
  (6)选择“换行符”,插入“\n”,表示回车符。 
  ④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。 
  【6】 正则表达式应用——实例应用 
  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"。 
  25.获取日期正则表达式:\d{4}[|\-|\.]\d{\1-\12}[|\-|\.]\d{\1-\31}? 
  评注:可用来匹配大多数年月日信息。 
  26.匹配双字节字符(包括汉字在内)[^\x00-\xff] 
  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 
  27.匹配空白行的正则表达式:\n\s*\r 
  评注:可以用来删除空白行 
  28.匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? /> 
  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 
  29.匹配首尾空白字符的正则表达式:^\s*|\s*$ 
  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 
  30.匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 
  评注:网上流传的版本功能很有限,上面这个基本可以满足需求 
  31.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
  评注:表单验证时很实用 
  32.匹配腾讯QQ号:[1-9][0-9]\{4,\} 
  评注:腾讯QQ号从1000 0 开始 
  33.匹配中国邮政编码:[1-9]\d{5}(?!\d) 
  评注:中国邮政编码为6位数字 
  34.匹配ip地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。 
  评注:提取ip地址时有用 
  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) 心中时刻保持新颖想法,尝试用各种新办法来解决遇到的问题。对于遇到的问题,在用常规的解决思路无法解决或不能很好解决的时候,可以大胆探索尝试采用新的方法或思路来解决问题,说大点就是创新!没有新思路估计今天的正则表达式还要等几百年才能露现人间。 
  (2) 善于学习和借鉴前人的经验和成果,UNIX鼻祖Ken Thompson是什么样子的人?是被计算机界尊称为“UNIX之父”的大师级别的人物,大师都在不断思考从其它学科、其它知识领域的工作成果,来改进自己的工作或程序,事实也证明这样做取得巨大结果和后来的深远影响是事先谁也无法预估到的,我们在做一些事情或研究的时间,是否也考虑学习大师的优秀习惯? 
  (3) 学好数学、英语并保持对数学、英语的兴趣,数学也是人类几千年积累的智慧结晶,学习数学知识可以培养和训练人的思维能力。看这篇文章的朋友,我想很多都是计算机相关专业的朋友,至于数学和英语对于计算机学习和发展的重要性的道理,这里就不在多说,重在实践加持之以恒! 
  (4) 养成独立思考的习惯。上学时候老师经常说人与动物的最大区别是人能思考。拉美洲有句关于“思考”的谚语是,不会思考的人是白痴,不肯思考的人是懒汉,不敢思考的人是奴隶。我想大家和我一样,既不愿做懒汉、奴隶,更不愿做白痴。所以相信正则分享网的朋友们一定会选择做一个“会思、肯思、敢思”的人。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值