什么是: 专门定义一类字符串统一规则的表达式
何时: 1. 按照指定规则模糊查找一类关键词时
2. 表单中验证输入项的格式
如何: 语法:
1. 最简单的正则其实就是关键词原文
2. 字符集: 规定字符串中一位字符可用的备选字符列表
何时: 只要某一位字符,有多个备选字时
如何: [备选字符列表]
强调: 一个字符集只能匹配一位字符
简写: 如果备选字符列表是连续的,就可用-省略中间字符
一位字母: [a-zA-Z]
一位数字: [0-9]
一位汉字: [\u4e00-\u9fa5]
特殊: 除了: [^排除的字符列表]
强调: ^必须写在[开头]
3. 预定义字符集: 4个:
\w 一位字母数字或_ =>[a-zA-Z0-9_]
\d 一位数字 => [0-9]
\s 一位空字符: 空格,Tab,...
. 一位任意字符
强调: 一个预定义字符集仅匹配一位字符
只有规则和预定义字符完全一致时,才能使用
如果不一致, 依然需要手写普通字符集
字符集仅控制每个字符的内容
4. 量词: 专门固定字符出现的次数
有明确数量边界:
字符集{min,max} 规定字符集必须最少出现min次
最多max次
字符集{min,} 最少min次, 多了不限
字符集{n} 必须n次
没有明确数量边界:
字符集? 可有可无,最多一次
字符集* 可有可无,多了不限
字符集+ {1,}
强调: 仅修改相邻的前一个字符集
5. 选择和分组:
分组: 将多个字符集分成一组:
何时: 如果希望一个量词同时修饰多个字符集时
比如: 我(了个?)?去: 我去 我了去 我了个去 我个去X
regexper.com
选择: 其实就是"或" 规则1|规则2
只要匹配任意一个规则即可
(微|w(ei)?)\s*(信|x(in)?)
手机号:
(\+86|0086)? +86或0086 可有可无,最多一次
\s* 空字符 可有可无,多了不限
1
[34578] 34578中挑一个
\d{9} 9位数字
(\+86|0086)?\s*1[34578]\d{9}
邮箱:
字母/数字或_ 一次以上
@
字母或数字 2位以上
(.和 字母或数字 2到3位) 1到2次
\w+@[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,3}){1,2}
6.指定匹配位置: 三个位置:
①字符串的开头 ^
②字符串的结尾 $
比如: 开头的空字符: ^\s+
结尾的空字符: \s+$
开头或结尾的空字符^\s+|\s+$
固定套路: 只要希望字符串和正则从头到尾完全匹配
比如同时前加^后加$
只要用正则表达式执行验证时,必须前加^后加$
③单词边界 \b 包含: ^ $ 空格 标点
比如: 单词首字母: \b[a-z]
单词尾字母: [a-z]\b
单独的一个单词no: \bno\b