1. ****正则表达式:
1. 最简单的正则:关键词原文
2. 备选字符集:某一位可用的备选字符列表
语法:[备选字符列表]
强调:一个中括号,必须且只能匹配一位。两个中括号,则后面匹配两个
2.1 连续备选字符: -
[^47]除了4 7
3. 预定义备选字符集: 对常用字符集的简写
\d -->1位数字 [0-9]
\w -->1位字母,数字或_ [0-9a-zA-Z_]
\s -->1位空字符,比如:空格 制表符 换行
\大写 -->\小写 的反义:
比如:\D 表示非\d 除了数字
‘.’ -->除了换行和回车后的任意字符
一个任意字*符:. 一个点
/^[1][3,4,5,8][0-9]{9}$/
4. 量词:规定相邻的前一个字符集出现的次数,重要
如何使用:紧跟在一个字符集之后
数值数量:{min,max}(最少,最大) eg:\d{6,8} -->数字6-8位
{min,}(几位以上)
{n}(必须n个) --->\d{6}------>6位数字
不确定数量:
?: 可有可无,最多1个,比如0086?,问号之修饰6,若想修饰整个0086,需要加个括号。
*: 可有可无,数量不限
+: 至少1个,多了不限
5. 选择和分组: 选择:或 | 分组: ( ),或在正则中的优先级特别的低
比如:手机号:
+86或0086
至少一个空字符 \s+
地区代码和空字符整体 可有可无,最多1次
1
在34578中选其一 [34578]
9位数字 \d{9}
((\+86|0086)\s+)?1[34578]\d{9}
身份证号:前15位数字
再两位数字
一位数字或Xx
后三位,整体可有可无,最多1次=********`1*
\d{15}(\d{2}\d[0-9Xx])?
7. 匹配指定位置:
^ 匹配开始位置的xxx, eg: ^\s+匹配字符串开头的空字符
$ 匹配结束位置的xxx, eg:\s+$ 匹配字符串结尾的空字符
匹配开头或结尾的空字符: ^\s+|\s+$
前加^后加$,且中间没有|:^xxxx$必须和正则完全匹配
***今后:做验证:都要前加^,后加$,即在验证中需要完全匹配。
\b:表示单词边界:eg:\bno\b,只找单词no .如果要匹配独立单词,要两边同时加\b.
匹配首字母和结尾字母相同的单词:首字母:\b[a-zA-Z]
中间字母:[a-zA-Z]+
结尾字母:1\b\
\b 的范围比较广,空格什么的也都算在内。
8. 预判:(?):在正式匹配前,先大概预判整个字符串的规则
多用于排除法 比如:密码强度:8位字母,数字字符,
必须包含一个大写和一个数字
所有字符:4大类:数字,小写字母,大写字母,特殊符号
1. 排除:不全由数字和小写字母组成:
结论:可能包含大写字母或特殊符号 (?![0-9a-z]+$)
解读:(?![0-9a-z]+$) 指预判从头到尾是否只有...组成,
“+”如果不加只表示结尾是否只有...组成
2. 排除:不全由大写字母和小写字母组成:
结论:可能包含数字或特殊符号 (?![a-zA-Z]+$)
3. 只能由字母或数字组成——排除了特殊符号 \w{6,8}
最终:(?!^[a-zA-Z]+$)(?^[0-9a-z]+$)[0-9a-zA-Z]{8}
或者^(?![a-zA-Z]+$)(?[0-9a-z]+$)[0-9a-zA-Z]{8}$
9:汉字备选字符集:[\u4e00-\u9fa5] eg:[\u4e00-\u9fa5]{3,5}-->3-5个汉字