正则表达式:是由普通字符及特殊字符(元字符)组成的对字符串进行过滤的逻辑公式
创建方式:
- 字面量(常用) var reg1 = /abc/ ; " abc"
- 构造函数 var reg2 = new RegExp ( " abc" ) ; " abc "
修饰符
- i const reg = / study / i ; i 是修饰符,表示不区分大小写;
- g const reg = / study / g g 修饰符可以查找字符串中所有的匹配项;
- s s修饰符默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 之后, . 中包含换行符 \n;
- m m 修饰符可以使 ^ 和 $ 匹配一段文本中每行的开始和结束位置;相比g 只匹配第一行,添加 m 之后实现多行。
方法
- test() 返回一个布尔值,如果要检测是字符串 (test参数)中含有某个子串
(正则定义),返回 true;
const reg = /google/i;
console.log(reg.test("gOogle111")); // true
- exec() 返回的类数组对象中的index表示匹配的子串在字符串中的位置
const reg = /day/ig;
console.log( reg.exec("good good study, Day Day up"));
字符串方法replace()、match()、search()、split(),也适用于正则表达式;
match 方法
const pattern = /good/ig;
const str = 'Good good GOoD study!,day day up!';
const arr = str.match(pattern); //将匹配到的结果都放入数组当中,并返回
console.log(arr); // ['Good', 'good', 'GOoD']
search方法
// 用于查找符合正则的字符串的位置,只返回第一个匹配的位置
const pattern = /good/ig;
const str = 'aGood good good study!,day day up!';
console.log(str.search(pattern)); // 1
元字符(常见)
- \ 元字符,表示转义,就是将特殊字符变成普通字符看待
- | 元字符, 代表或者的意思 匹配其中一种字符串
- . 元字符,代表除了换行之外的所有单个字符
var reg = /g..gle/ig;
var str ="googaggleg-ggle";
console.log(reg.test(str)); // true
console.log(str.search(reg)); // 3
console.log(str.match(reg)) // ['gaggle', 'g-ggle']
- * 元字符,出现任意次(0-n次) 重复*前的单个字符的多次匹配
var reg = /aa*gle/i; //
var str = "bbaaaaaaaglecc";
console.log(reg.test(str)); // true
console.log(str.match(reg)); // ["aaaaaaagle"]
- + 元字符, 表示至少1次
var reg = /ga+gle/ig;
var str = "gaaaagle";
console.log(reg.test(str)); // true
console.log(str.search(reg)); // 0
console.log(str.match(reg)); // ['gaaaagle']
- ? 元字符 表示0-1次
var reg = /g?gle/ig;
var str = "g?gle";
console.log(reg.test(str)); // true
console.log(str.search(reg)); // 2
console.log(str.match(reg)); // ['gle']
- ^ 匹配输入字符串的开始位置
- $ 匹配输入字符串的结束位置
var reg = /^c.+ab$/;
var str = "caaaaaaa1cab";
console.log(reg.test(str)); //true
console.log(str.match(reg)) // ["caaaaaaa1cab"]
- \w, 等价于[a-zA-Z0-9_] ,字母数字下划线
- \W ,非字母数字下划线
- \d, 代表数字 等价于[0-9]
- \D ,匹配一个非数字字符
- \s, 匹配任何空白字符,包括空格
- \S ,匹配任何非空白字符。
- {n,m} , 最少匹配 n 次且最多匹配 m 次
- [] 表示字符可以出现的范围
var reg = /g[0-9a-zA-Z_]+gle/g;
var str = "agglegle";
console.log(reg.test(str)); // true
console.log(str.match(reg)) // ['gglegle']