一.作用
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,获取将字符串中符合规则的内容提取出来
二.创建
/*
1.创建正则表达式的对象
语法:
var 变量 = new RegExp("正则表达式","匹配模式");
使用typeof检查正则对象,会返回object
var reg = new RegExp("a"); 这个正则表达式可以来检查一个字符串中是否含有a
在构造函数中可以传递一个匹配模式作为第二个参数,
可以是
i 忽略大小写
g 全局匹配模式
*/
var reg1 = new RegExp('abc', 'i')
var reg2 = new RegExp('def', 'g')
/*
2.使用字面量来创建正则表达式
语法:var 变量 = /正则表达式/匹配模式
*/
var reg3 = /abc/i;
var reg4 = /def/g
三、test()方法
/*
test()方法
检查一个字符串是否符合正则表达式的规则,
如果符合则返回true,否则返回false
*/
var str = 'abc';
var reg5 = /Ab/i;
console.log(reg5.test(str));
四、匹配规则
/*
1.表达式
* []里的内容也是或的关系
* [ab] == a|b
* [a-z] 任意小写字母
* [A-Z] 任意大写字母
* [A-z] 任意字母
* [0-9] 任意数字
* [^ ] 除了(与不带[]区分)
*/
var str2 = 'abcdefg123456';
var reg6 = /[ah]/;
console.log(reg6.test(str2));//true
var reg7 = /^[a-z]/;
console.log("1111",reg7.test(str2));//true
/*
2.量词
- 通过量词可以设置一个内容出现的次数
- 量词只对它前边的一个内容起作用
- {n} 正好出现n次
- {m,n} 出现m到n次
- {m,} m次以上
- + 至少一个,相当于{1,}
- * 0个或多个,相当于{0,},有没有都行
- ? 0个或1个,相当于{0,1}
*/
var str3 = 'a3bgds2p321bkcdcc1271';
var reg8 = /k{1,}/;
/*
3.
检查一个字符串中是否以a开头结尾
^ 表示开头
$ 表示结尾
*/
var reg = /^a$/;
/*
4.元字符
\d 查找数字。
\D 查找非数字。
\w 匹配字母、数字、下划线
\W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。
\s 匹配一个任意的空白字符 空格 /n /t
\S 匹配一个任意的非空白字符
\b 匹配单词边界。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
*/
五、相关方法
/*
1.split()
- 可以将一个字符串拆分为一个数组
- 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
- 这个方法即使不指定全局匹配,也会全都插分
*/
var str4 = 'h1e2l3l4o5w6o7r8l9d'
var arr = str4.split(/[0-9]/)
console.log('arr',arr);//['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
/*
2.search()
- 可以搜索字符串中是否含有指定内容
- 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
- 它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
- serach()只会查找第一个,即使设置全局匹配也没用
*/
var str5 = 'qq7892374@cmial.com';
var result = str5.search(/[A-Z]{1}|[0-9]/)
console.log(result);//2
/*
3. match()
- 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
- 默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
可以为一个正则表达式设置多个匹配模式,且顺序无所谓
- match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
*/
var str6 = '1jk764ghw7678gfyu'
var result1 = str6.match(/[A-z]/);
var result2 = str6.match(/[A-z]/g);
//结果 ['j', index: 1, input: '1jk764ghw7678gfyu', groups: undefined]0: "j"groups: undefinedindex: 1input: "1jk764ghw7678gfyu"length: 1[[Prototype]]: Array(0)
// ['j', 'k', 'g', 'h', 'w', 'g', 'f', 'y', 'u']
console.log(result1, result2)
/*
4.replace()
- 可以将字符串中指定内容替换为新的内容
- 参数:
1.被替换的内容,可以接受一个正则表达式作为参数
2.新的内容
- 默认只会替换第一个
*/
var str6 = '1jk764ghw7678gfyu'
var result3 = str6.replace(/[0-9]/g,'')
console.log(result3);//jkghwgfyu