JAVA正则表达式

JAVA正则表达式4种常用功能      正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持    下面简单的说下它的4种常用功能:    查询:  以下是代码片段:  String str="abc efg ABC";   String regEx="a|f"; //表示a或f    Pattern p=Pattern.compile(regEx);    Matcher m=p.matcher(str);    boolean rs=m.find();

    如果str中有regEx,那么rs为true,否则为flase。如果想在查找时忽略大小写,则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);     提取:以下是代码片段:  String regEx=".+/(.+)$";   String str="c:/dir1/dir2/name.txt";    Pattern p=Pattern.compile(regEx);    Matcher m=p.matcher(str);    boolean rs=m.find();    for(int i=1;i<=m.groupCount();i++){    System.out.println(m.group(i));    }

    以上的执行结果为name.txt,提取的字符串储存在m.group(i)中,其中i最大值为m.groupCount();     分割:  以下是代码片段: String regEx="::";    Pattern p=Pattern.compile(regEx);    String[] r=p.split("xd::abc::cde");    执行后,r就是{"xd","abc","cde"},其实分割时还有跟简单的方法:    String str="xd::abc::cde";    String[] r=str.split("::");

    替换(删除):  以下是代码片段:  String regEx="a+"; //表示一个或多个a

 Pattern p=Pattern.compile(regEx);    Matcher m=p.matcher("aaabbced a ccdeaa");    String s=m.replaceAll("A");     结果为"Abbced A ccdeA"     如果写成空串,既可达到删除的功能,比如:   String s=m.replaceAll("");     结果为"bbced ccde"     附:   /D 等於 [^0-9] 非数字  /s 等於 [ /t/n/x0B/f ] 空白字元  /S 等於 [^ /t/n/x0B/f ] 非空白字元  /w 等於 [a-zA-Z_0-9] 数字或是英文字  /W 等於 [^a-zA-Z_0-9] 非数字与英文字     ^ 表示每行的开头  $ 表示每行的结尾

"^/d+$"  //非负整数(正整数 + 0) "^/[0-9/]*/[1-9/]/[0-9/]*$"  //正整数 "^((-/d+)/|(0+))$"  //非正整数(负整数 + 0) "^-/[0-9/]*/[1-9/]/[0-9/]*$"  //负整数 "^-?/d+$"    //整数 "^/d+(/./d+)?$"  //非负浮点数(正浮点数 + 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+)?)/|(0+(/.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+)?$"  //浮点数 "^/[A-Za-z/]+$"  //由26个英文字母组成的字符串 "^/[A-Z/]+$"  //由26个英文字母的大写组成的字符串 "^/[a-z/]+$"  //由26个英文字母的小写组成的字符串 "^/[A-Za-z0-9/]+$"  //由数字和26个英文字母组成的字符串 "^/w+$"  //由数字、26个英文字母或者下划线组成的字符串 "^/[/w-/]+(/./[/w-/]+)*@/[/w-/]+(/./[/w-/]+)+$"    //email地址 "^/[a-zA-z/]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$"  //url /^(d{2}/|d{4})-((0(/[1-9/]{1}))/|(1/[1/|2/]))-((/[0-2/](/[1-9/]{1}))/|(3/[0/|1/]))$/&nbsp;&nbsp; //&nbsp; 年-月-日 /^((0(/[1-9/]{1}))/|(1/[1/|2/]))/((/[0-2/](/[1-9/]{1}))/|(3/[0/|1/]))/(d{2}/|d{4})$/&nbsp;&nbsp; // 月/日/年 "^(/[w-./]+)@((/[/[0-9/]{1,3}./[0-9/]{1,3}./[0-9/]{1,3}.)/|((/[w-/]+.)+))(/[a-zA-Z/]{2,4}/|/[0-9/]{1,3})(/]?)$"&nbsp;&nbsp; //Emil "(d+-)?(d{4}-?d{7}/|d{3}-?d{8}/|^d{7,8})(-d+)?"  //电话号码 "^(d{1,2}/|1dd/|2/[0-4/]d/|25/[0-5/]).(d{1,2}/|1dd/|2/[0-4/]d/|25/[0-5/]).(d{1,2}/|1dd/|2/[0-4/]d/|25/[0-5/]).(d{1,2}/|1dd/|2/[0-4/]d/|25/[0-5/])$"&nbsp;&nbsp; //IP地址

匹配中文字符的正则表达式: /[/u4e00-/u9fa5/] 匹配双字节字符(包括汉字在内):/[^/x00-/xff/] 匹配空行的正则表达式:/n/[/s/| /]*/r 匹配HTML标记的正则表达式:/<(.*)>.*<///1>/|<(.*) //>/ 匹配首尾空格的正则表达式:(^/s*)/|(/s*$) 匹配Email地址的正则表达式:/w+(/[-+./]/w+)*@/w+(/[-./]/w+)*/./w+(/[-./]/w+)/* 匹配网址URL的正则表达式:^/[a-zA-z/]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?$ 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^/[a-zA-Z/]/[a-zA-Z0-9_/]{4,15}$ 匹配国内电话号码:(/d{3}-/|/d{4}-)?(/d{8}/|/d{7})? 匹配腾讯QQ号:^/[1-9/]*/[1-9/]/[0-9/]*$

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值