元字符:
\b:代表单词的开头和结尾,也就是单词的分界。 .:匹配除了换行符以外的任意字符。 *:指定*前边的内容可以连续重复使用任意次数以使整个表达式达到匹配。可以是0次重复 +:重复一次或更多次,至少重复一次 ?:重复1次或0次 {n}:重复n次 {n,}:重复n次或更多次 {n,m}:重复n到m次 \d:匹配一位数字。 \d{5}:{5}指定前边的\d连续匹配5次 \n:换行符 \s:匹配任意的空白符 \w:匹配字母或数字或下划线或汉字 \w{6}:六个字符 ^:匹配要用来查找字符串的开始 $:匹配要用来查找字符串的结束 \d{5,12}:指定前边\d重复不少于5次不多于12次,匹配包含5到12连续位数字 ^\d{5,12}$:匹配一个5到12位的字符串 \:转义,匹配.、/、*之类的字符 [aeiou]:[]匹配方括号里面的字符。此例匹配aeiou [0-9]:[]号里面可以指定范围,例为匹配0到9之间的数字,相当于\d [a-z0-9A-Z]:匹配字符,相当于\w |:分枝,连接多个表达式规则,满足一个规则就可以匹配,注意顺序,匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。 ():括号可以把表达式括起来形成子表达式,子表达式可以指定重复次数。 反义: \W:任意不是字母数字下划线汉字的字符 \S:任意不是空白符的字符 \D:非数字字符 \B:不是单词开头或结束的位置 [^x]:除了x以外的任意字符 [^aeiou]:除了aeiou之外的任意字符 后向引用:用()括起来的表达式可以作为一个分组,每个分组默认有一个组号,从左到右分类为1,2,···,可以通过引用组号来引用()里面的表达式所匹配到的词。 \b(\w+)\b\s+\1\b:其中1代表的是前边()里面表达式捕获的内容。此表达式匹配的是: 一个至少为1个字母的单词 空格 前边那个单词 单词分界 分组命名:(?<name>\w+) 或(?'name'w\) 将\w+命名为name 引用被命名的分组:\k<name> 小括号的使用: (exp):匹配exp并捕获文本到自动命名的组里 (?<name>exp):匹配exp并捕获文本到名称为name的组里 (?:exp):匹配文本并且放弃自动分组组号 (?=exp):匹配exp前边的位置 (?<=exp):陪陪exp后边的位置 (?!exp):匹配后边跟的不是exp的位置 (?<!exp):匹配前边不是exp的位置 (?#comment):无匹配,仅做注释使用 零宽断言:看不懂不看了 递归匹配:看不懂不看了、 贪婪与懒惰:正则表达式当存在接受重复限定词时默认匹配尽可能长的字符串,当我们需要的是匹配尽可能少的字符串时需要在*、+、?、{n,m}、{n,}后边加上?,即*?,+?,??,{n.m}?,{n,}?
注:如果不使用^和$的话,对于\d{5,12}而言,使用这样的方法就只能保证字符串里包含5到12连续位数字,而不是整个字符串就是5到12位数字。
例子:
查找hi:hi 匹配hi,HI,Hi,hI 精确地查找hi这个单词:\bhi\b hi后边不远处跟着Lycy:\bhi\b.*\bLucy\b 以0开头,然后两个数字然后—然后8个数字:0\d\d-\d\d\d\d\d\d\d\d 以0开头,然后两个数字然后—然后8个数字:0\d[2]-\d[8] 以a开头的字母:\ba\w*\b 刚好6个字符的单词:\b\w{6}\b 要求QQ号必须为5到12位的数字:^\d{5,12}$ \(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}:这个表达式匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔 \(?0\d{2}[) -]?\d{8}:首先出现一次或0次(,然后一个0,接着两位数字,然后是出现1次或0次)或-,最后是8位数字。 (\d{1,3}\.){3}\d{1,3}:xxx.xxx.xxx.xxx x代表数字 ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?):IP,ip格式为xxx.xxx.xxx.xxx,其中xxx不大于255 不含空白符的字符串:\S+ 用尖括号括起来的以a开头的字符串:<a[^>]+>
常用的正则表达式:
匹配中文:[\u4e00-\u9fa5] 匹配双字节字符:[^\x00-\xff] 匹配空白行:\n\s*\r 匹配Email地址:[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])? 匹配URL:[a-zA-z]+://[^\s]* 匹配国内电话号码:\d{3}-\d{8}|\d{4}-\{7,8} 匹配腾讯QQ号:[1-9][0-9]{4,} 匹配中国邮政编码:[1-9]\d{5}(?!\d) 匹配18位身份证号:^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$ 匹配(年-月-日)格式日期:([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))) 匹配正整数:^[1-9]\d*$ 匹配负整数:^-[1-9]\d*$ 匹配整数:^-?[1-9]\d*$ 匹配非负整数:^[1-9]\d*|0$ 匹配非正整数:^-[1-9]\d*|0$ 匹配正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 匹配负浮点数:^-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$
正则表达式在线测试工具:正则表达式在线测试
正则表达式学习教程:正则表达式教程
转载请注明原文地址: https://www.6miu.com/read-28372.html