正则表达式Regular(规则) Expression(表达式)
规定一个字符串中字符出现的规律的表达式
xxx@qq.com/cn 1
when 只要使用一个种规则,模糊匹配关键词时
how
1.最简单的正则就是关键词原文
2、字符集:规定字符串中某一位字符,备选字符列表 只有一个字符,但是有多重选择字符
语法:[备选字符列表]
每个字符集只能匹配一位字符,且每个字符集中至少匹配一次
ex:[微wv][信x] 匹配到的内容: 微信 wx vx 微x v信 w信
简写:
1.如果备选字符列表是连续的,可用-省略中间字符
ex:
一位数字:[0123456789] ==>[0-9]
一位小写字母:[a-z]
一位大写字母:[A-Z]
一位字母:[a-zA-Z]
一位汉字:[\u4e00-\u9fa5]
特殊:除了xx以外[^xx]^必须写在正则的开头
预定义字符集:对常用字符集的简写
\w 一位字母数字或_ [0-9a-zA-Z_]
\d 一位数字 [0-9] digital(数位)
\s 一位空字符 一切看不见的字符:空格,Tab
..
. 一位任意字符
一个预定义字符集仅匹配一位字符,仅用于规定字符的内容
量词:专门规定一位字符集出现次数的规则,量词都是用于一个字符集只有默认修辞相邻的前一个字符集,量词需要用在字符后面
1、有明确数量的边界
字符集{min,max} 规定字符集出现最少min次,最多max次
字符集{min,} 最少出现min次
字符集{n} 必须出现n次
2、没有明确数量的边界
字符集? 可有可无,最多出现一次
字符集* 可有可无,多了不限
字符集+ 至少出现一个,多了不限
仅修辞相邻的前一个字符集
选择和分组
分组:将多个字符集组成一组 可以让一个量词修饰多个字符集
ex: (字符集){}
选择:"或" 匹配任意一个规则即可
ex: 规则1|规则2 (微|w(ei)?)(信|x(in)?)
匹配指定位置
字符串的开头 ^ ex: ^\s+ 开头的空字符
字符串结尾 $ ex: \s+$ 结尾的空字符
单词边界 \b ex: \bno\b 匹配no这个单词,但是前和后可以用标点或者空格和其他字符隔开
手机号
(\+86|0086)? +86或0086
\s* 空字符,可有可无,多了不限制
1
[3457869] 3,4,5,6,7,8,9中挑一个
\d{9} 9位数字
(\+86|0086)?\s*1[3456789]\d{9} 正则中间不要加空格,容易被解析成规则 +前加上\否则会被解析成量词
邮箱
数字/字母或_ 一次以上 \w+
@
字母或数字 2位以上 [0-9a-zA-Z]{2,}
(. 和 (字母或数字) 2-3位) 1-2次
\w+@[0-9a-zA-Z]{2,}[.][a-zA-Z]{2,3}([.][a-zA-Z]{1,3})?