普通匹配符:
能够匹配与之对应的字符
*正则默认区分大小写
match(/表达式/):匹配成功返回数组,否则返回null
i、g、m称为正则标记符(参数) :
i : 不区分大小写
g : 全局匹配
m : 多行匹配
let str = 'Hello World world';
let reg = str.match(/w/gi);
//["W", "w"]
能够匹配多个字符中的其中一个的匹配符
★ \d、\w、. 都只能匹配一个
- \d : 0~9
- \w : 数字、字母、下划线
- . : 匹配除换行的所有字符
let str = 'Hello World 1235$';
let reg = str.match(/\w.\d/);
//["d 1", index: 10, input: "Hello World 1235$", groups: undefined]
[]:能够自定义规则的匹配符
let str = '12356';
let reg = str.match(/1[3578]\d{3}/);
//str = '12356'; 返回 null
//str = '13356'; 返回 ["13356", index: 0, input: "13356", groups: undefined]
用来修饰匹配次数的匹配符
- {n} : 代表前面的匹配符出现n次
- {n,m} : 出现n~m次
- {n,} : n~max
- {,n} : min~n
- + : 1~max
- ? : 0~1
- * : 0~max
let str = '15032365696';
let reg = str.match(/^1[35789]\d{9}$/);
//["15032365696", index: 0, input: "15032365696", groups: undefined]
正则表达式的完整匹配
- ^ : 在[]中([^])代表取反,但在外面代表的是从开始匹配
- $ : 持续匹配到结束
let str = '15023232659';
let reg = str.match(/^1[35789]\d{9}$/);
//str = '15023232659' 返回["15023232659", index: 0, input: "15023232659", groups: undefined]
//str = 't-15023232659' 返回 null
在正则中:^ $ . \ []等特殊符号在匹配的时候需要加\ (转义符号)
let str = '15023232659$^[].';
let reg = str.match(/\$\^\[]\./);
//["$^[].", index: 11, input: "15023232659$^[].", groups: undefined]
条件分支
- | : 代表或
- () : 括号中的内容成为一个独立的整体
括号中的内容可以进行分组,单独匹配,如果不需要此功能 (? : )
数值匹配
数值类型规律图
中文的处理(在计算机中通过ASCII对应表来输入汉字)
escape() : 可以把字符串转化为ASCII编码
unescape() : 可以把ASCII编码转为汉字
//escape("一") \u4E00 第一个汉字
//escape("龥") \u9FA5 最后一个汉字
let str = '陟罚臧否';
let reg = str.match(/[\u4E00-\u9FA5]/g);
//["陟", "罚", "臧", "否"]
贪婪与懒惰
在正则中默认是贪婪模式(尽可能多的匹配)
可以在修饰匹配次数的匹配符(* ? + {})后面添加 ? ,代表懒惰
IP验证
//IP验证
//合法ip:192.168.1.1
//非法ip:256.168.1.1
//保留ip: 0.0.0.0 255.255.255.255
//拆分:
// 250~255 25[0-5]
// 200~249 2[0-4]\d
// 0~199再拆:
// 0~9 \d ========> [1-9]?\d
// 10~99 [1-9]\d ========> [1-9]?\d
// 100~199 1\d{2}
let ip = '192.168.1.142';
let reg = /^(?:(?:25[0-5]|2[0-4]\d|[1-9]?\d|1\d{2})\.){3}(?:25[0-5]|2[0-4]\d|[1-9]?\d|1\d{2})$/;
电话号码正则:
/(^[1](([3|5|8][\d])|([4][4,5,6,7,8,9])|([6][2,5,6,7])|([7][^9])|([9][1,8,9]))[\d]{8}$)|(^(0\d{2}-)?\d{8}$)|(^(0\d{3}-)?\d{7}$)|(^0\d{2}-\d{8}-\d+$)|(^0\d{3}-\d{7}-\d+$)/
学习正则的笔记整理 ( * ^ ▽ ^* )