1、正则表达式介绍
1) 正则表达式是检查、匹配字符串的表达式
2) 正则表达式是描述规则,主流语言都有良好支持
3) 字符串校验、查找与替换是正则表达式主要使用场景
2、正则表达式案例
1) 检查输入的身份证号是否合法(15位、18位)
2) 示例:13010220200329091x
3) 正则表达式:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d | x | X)$)
4) 正则表达式测试工具:https://tool.oschina.net/regex
3、字符范围匹配
示例:
a) 匹配“hallo“或者”hello“ // h[ae]llo
b) 匹配数字范围(0570-0579) // 057[0-9]
c) 单选题只允许输入ABCD其中一项 // [ABCD]或[A-D]
4、元字符
示例:
a) 匹配数字(3213.384957) // \d{4}\ .\d{6}
b) 匹配座机号码(0571|0574-XXXXXXXX)//057[14]-\d{8}
c) 匹配合法的18位身份证号(不能以790开头) // [1234568]\d{16}[0-9xX]
5、多次重复匹配
示例:
a) 匹配全国做记号(区号3或4位-电话号码7或8位)// \d{3,4}-\d{7,8}
b) 匹配英文姓名(例如:James Watson) //[A-Z][a-z]+\s[A-Z][a-z]*
6、定位匹配
补充:
“ .* “表示任意个任意字符
示例:
a) 匹配姓林的人姓名(名字1-5位) // ^林.{1,5}
b) 匹配以.com结尾的网址 // .*\.com$
c) 匹配以https开头以.cn结尾的字符 // ^https.*\.cn$
7、贪婪模式与非贪婪模式
1)贪婪模式(默认):在满足条件的情况下尽可能多的匹配字符
2)非贪婪模式:在满足条件的情况下尽可能少的匹配字符
示例1:
贪婪模式(默认):“.*“
非贪婪模式:“.*?“ // 问号?要写在描述数量的后面
示例2:1234567890
贪婪模式(默认):\d{4,8}
非贪婪模式:\d{4,8}? // 问号?要写在描述数量的后面
8、表达式分组
1) 分组将“正则“分组为多个子表达式,每个分组可以被单独提取
2) 示例:abababcdcdcd
3) 正则表达式:(ab){3}(cd){3}
示例:
a) 匹配验证码(4位或6位) // (^\d{4}$) | (^\d{6}$)
b) 匹配车车牌号(粤A-U888G)// ^([粤京冀][A-Z])-([A-Z0-9]{5})$
c) 匹配中英文名字 // (^[\u4e00-\u9fa5]{2,8}$) | (^[A-Z][a-z]+\s[A-Z][a-z]*$)
补充:\u4e00-\u9fa5是所有中文的ASCII码值
9、正则表达式在JS中的书写规则
1)表达式语法:/正则表达式/
2)正则语法测试:表达式对象.test(测试对象) //返回true/false
3)示例:var regexNum=/ ^\d{2,8}$ /;
10、Java中Web信息提取