第一部分介绍正则的定义
1. 正则的介绍 let reg = /pattern/flags
- pattern 像上面let后面定义的则为正则的定义,pattern是其中的正则表达式(可以包含字符、限定符、分组、向前查找、反向引用)
- flags 校验的标志 常用的有(g:全局匹配 i : 不区分大小写匹配)
2.正则的定义
- 字面变量法
// 定义全局条件 let reg = /a/g; // 定义不区分大小写的条件 let reg1 = /a/i; // 定义全局且不分大小写的条件 let reg2 = /a/gi;
- 通过new操作符定义
// 定义全局的条件 let reg = new RegExp('/a/', 'g'); // 定义不区分大小写的条件 let reg1 = new RegExp('/a/', 'i'); // 定义全局且不区分大小写的条件 let reg2 = new RegExp('/a/', 'gi');
3. 日常的用途
- 用于数据的校验
// 可以用于校验手机号 let reg1 = /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/; let tel = 15869895475; console.log(reg1.test(tel)); // true let tel1 = 01234567890; console.log(reg1.test(tel1)); // false
- 结合字符串的replace的方法用于替换字符串
let reg = /a/g; let str = 'abcaef'; let str_new = str.replace(reg, 'q'); console.log(str_new); // qbcqef
- 结合字符串的match的方法用于截取字符串
let str = "http://www.runoob.com:80/html/html-tutorial.html"; let patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/; arr = str.match(patt1); console.log(arr); console.log(arr.length); // [ 'http://www.runoob.com:80/html/html-tutorial.html', // 'http', // 'www.runoob.com', // ':80', // '/html/html-tutorial.html', // index: 0, // input: 'http://www.runoob.com:80/html/html-tutorial.html', // groups: undefined ] // 5
- 结合字符串的search的方法用于截取字符串
let str = 'aaabcaad'; let reg = /(a|b)/g; let str1 = 'A'; let result = str.search(reg) console.log(result); // 0 let result1 = str1.search(reg) console.log(result1); // -1
注:我们会发现符合条件的字符串返回 0 不符合的字符串返回 -1
第二部分介绍基本的正则表达式
- ^ 以后面的子表达式为开始
let str = 'abcd123'; // 下面的正则表示以a为开始即为符合条件的字符串 let reg = /^a/g; console.log(reg.test(str)); // true
- $ 以前面的子表达式为结束
let str = 'abcd123'; // 下面的正则表示以123结尾的字符串为符合条件的字符串 let reg = /123$/g; console.log(reg.test(str)); // true
- <