正则表达式,及练习
- 1.创建一个正则表达式
- 1.1使用构造函数创建
- 1.2 使用字面量创建一个正则表达式
- 2.匹配规则
- 3.匹配方法
- 4.练习
- 4.1识别手机号
- 4.2匹配单词child
- 4.3去掉字符串中的空格
- 4.4匹配邮箱
1.创建一个正则表达式
1.1使用构造函数创建
//创建正则表达式对象
var re = new RegExp("正则表达式","匹配模式");
//可以传递第二个参数:匹配模式
i:忽略大小写,
g:全局匹配模式
m:多行匹配
test()
-使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,
如果符合则返回true,
否则返回false
//用来检查字符串中是否含有a
var reg2 = new RegExp("a","i");
console.log(reg2.test("Asssshjk"));
1.2 使用字面量创建一个正则表达式
//使用字面量创建正则表达式
//var reg3 = /正则表达式/匹配模式
var reg4 = /a/i
使用字面量的方式创建更加简单
使用构造函数创建更加灵活
2.匹配规则
* 1. | 表示或
* 2. [] 中括号里也是或的关系 [ab] == a|b;
* 3. [a-z] 任意小写字母
* 4. [A-z] 任意字母
* 5. [^ ] 除了***以外
* 6. [0-9] 任意数字
* 7. . 查找单个字符,除了换行和行结束符
*
* 8. \w 任意字母数字下划线
* 9. \W 除了字母数字下划线
* 10. \d [0-9]
* 11. \D [^0-9]
* 12. \s 空格
* 13. \S 除了空格
*
* 14. \b 单词边界
* 15. \B 除了单词边界
*
*
* 1. /ab{1,3}/ :出现一次到三次
* 2. /ab{3}/ :出现三次
* 3. /(ab){3}/ :ab一起出现三次
* 4. /{m,}/ :出现m次以上. // :出现m次以上
* 5. + :至少一个
* 6. * :0个或多个
* 7. ? :0个或一个
* 8. ^ :以***开头,他和[]里的^不一样
* 9. $ :以***结尾
*
* 查找.和/的话需要/进行转义
*
//匹配abc|adc|aec
var reg = /a[bde]c/i;
//[^ab]
console.log(reg.test("abc")); //-->true 除了ab以外还有c
3.匹配方法
1.match()
2.search()
3.replace()
4.split()
1.match()
-可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
-默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
他会将结果封装到一个数组里面
var str3 = "aBcd125efgh1ijk4561lmnopqrst145uvwxyz";
var res3 = str3.match(/[A-z]/gi);
console.log(res3);
//可以为一个正则表达式设置多个匹配模式
2.search()
* -搜索字符串中是否含有“***”
* -与split()相同的是他可以传一个正则表达式进去
* search():不能全局匹配,哪怕你指定全局匹配,依然没什么卵用,他只匹配第一个
var str2 = "abc def ghi jjk";
var res2 = str2.search(/g[hjkl]i/);
console.log(res2);
//搜索到会返回索引,没有搜索到会返回-1
3.replace()
-可以将字符串中指定内容替换为新的内容
-参数:
1.被替换的内容
2.新的内容
4.split()
-可以将一个字符串拆分为一个数组
-方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
var str = "1a2b3c4d5e6f7";
var res = str.split(/[a-z]/i);
console.log(res);
/**
* 量词:
* {} :表示刚好出现几次
* 量词只对他前面的一个内容起作用*/
var reg5 = /^a$/;
console.log(reg5.test("aaa")); //false
console.log(reg5.test("a")); //true
//注意转义字符
var reg7 = /\//ig;
console.log("***"+reg7.test("/"));
4.练习
4.1识别手机号
//小练习:识别手机号
var reg6 = /^1[34578][0-9]{9}$/
var num = 13456524623;
console.log(reg6.test(num))
//必须加上以**开头和结尾,不然可能位数不对,或者手机号码在中间包含的
4.2匹配单词child
//匹配单词child
//注意单词边界
var regg = /\bchild\b/;
console.log(regg.test("hello child"));
4.3去掉字符串中的空格
//练习:去掉字符串中的空格
var str = " hell oo i ";
//匹配开头空格
str = str.replace(/^\s*/,"");
//匹配结尾空格
str = str.replace(/\s*$/,"");
//那整合到一起呢
str = str.replace(/^\s*|\s*$/g,"");
console.log(str);
4.4匹配邮箱
官方
hello.nihao@qq.com.cn
任意字母数字下划线 . 任意字母数字下划线 @ 字母数字 . 字母{2,5}位 .字母{2,5}
\w{3,} (\.\w+)* @ [A-z0-9]+ (\.[A-z]{2,5}){1,2}
//后面的可以出现一到两次
var regt2 = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/gi;
console.log(regt2.test("nihao.ffgdd@163.com.cn"));