正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
基础知识
常用正则表达式
- 匹配数字
\d+(\.\d+)?
- 匹配中文字符
[\u4e00-\u9fa5]
- 匹配邮箱地址
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
- 匹配网址
[a-zA-z]+://[^\s]*
- 匹配国内电话号码
\d{3}-\d{8}|\d{4}-\{7,8}
- 匹配QQ号
[1-9][0-9]{4,}
- 匹配身份证号
^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
- 匹配手机号码
[1][3587]\d{9}
实例
提取字符串中的数字并高亮显示
String ss = "(一)现状:昆明市所辖14个县市区范围内,共有国有林场14个,其中市级2个,县区12个。从经营类型上划分,全市国有林场均属生态公益型,经营总面积87.32万亩,森林面积63.78万亩,森林总蓄积量为199.55万立方米,森林覆盖率73.05%;(二)目标:通过全面深化国有林场改革,切实做到“三增长、两建立、一确保”。即:资源增长、职工增收、林场增效;全面建立健全职工社会保障体系,尽快建立符合现代林业发展要求的国有林场管理体制和经营机制;确保林区社会和谐稳定"; // 创建 Pattern 对象 Pattern pattern = Pattern.compile("\d+(\.\d+)?"); Matcher matcher = pattern.matcher(ss.trim()); String lasts=""; while (matcher.find()){ if(lasts.equals(matcher.group())){ ss=ss.replace(matcher.group(),"<font color=#FF4081>"+ matcher.group()+ "</font>"); }else { ss=ss.replaceFirst(matcher.group(),"<font color=#FF4081>"+ matcher.group()+ "</font>"); } lasts=matcher.group(); }