JS笔记2--正则表达式

正则表达式:由元字符组成用来匹配字符串

元字符

.  表示的是:除了\n以外的任意的一个字符
[] 表示的是:范围  [0-9] 表示的是0到9之间的任意的一个数字
[a-z] 表示的是:所有的小写的字母中的任意的一个
[A-Z] 表示的是:所有的大写的字母中的任意的一个
[a-zA-Z] 表示的是:所有的字母的任意的一个
[0-9a-zA-Z] 表示的是: 所有的数字或者是字母中的一个
[.] 就是一个.
() 分组 提升优先级   [0-9]|([a-z])|[A-Z]

限定符:限定表达式出现的次数

*   表示的是:前面的表达式出现了0次到多次
[a-z][0-9]* 小写字母中的任意一个 后面是要么是没有数字的,要么是多个数字的
+  表示的是:前面的表达式出现了1次到多次
[a-z][9]+  小写字母一个后面最少一个9,或者多个9`在这里插入代码片`
?  表示的是:前面的表达式出现了0次到1次,最少是0次,最多1次
{0,} 表示的是前面的表达式出现了0次到多次 作用和 *一样
{1,} 表示的是前面的表达式出现了1次到多次 作用和 +一样
{0,1} 表示的是前面的表达式出现了0次到1次 作用和 ?一样
{5,10} 表示的是前面的表达式出现了5次到10次
{4} 前面的表达式出现了4次
{,10} 错误写法XXX
^ 表示的是以什么开始,或者是取非(取反)  ^[0-9] 以数字开头 ^[a-z] 以小写字母开始
[^0-9] 取反,非数字 [^a-z] 非小写字母
$ 表示的是以什么结束   [0-9][a-z]$  必须以小写字母结束
\d 数字中的任意一个   \D 非数字中的一个
\s 空白符中的一个  \S 非空白符
\w 非特殊符号(字母 数字或下划线)  \W 特殊符号
\b 单词的边界

正则表达式练习

身份证的正则表达式  15位或者18位 
([1-9][0-9]{14})([0-9]{2}[0-9xX])?
([1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX])

邮箱的正则表达式 sd2113_3.-fd@itcast.com.cn
[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}

座机号码的正则表达式 010-19876754
[0-9]{3,4}[-][0-9]{8}  
\d{3,4}[-]\d{8}

创建正则表达式对象

1.通过构造函数创建对象
var reg=new RegExp(/\d{5}/); //创建对象
var flag=reg.test("我的电话是10086"); //使用test方法测试
console.log(flag);
2.字面量的方式创建对象
var reg=/\d{1,5}/;
var flag=reg.test("小苏的幸运数字:888");
console.log(flag);

全局模式和忽略大小写

g 全局模式匹配
i 忽略大小写

字符串match方法匹配

       var str="中国移动:10086,中国联通:10010,中国电信:10000";
       //把里面所有的数字全部显示出来
       var array=str.match(/\d{5}/g);
       console.log(array); //(3) ["10086", "10010", "10000"]
      var str = "123123@xx.com,fangfang@valuedopinions.cn 286669312@qq.com 2、emailenglish@emailenglish.englishtown.com 286669312@qq.com...";
       var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
       console.log(array); 
       //["123123@xx.com", "fangfang@valuedopinions.cn", "286669312@qq.com", "emailenglish@emailenglish.englishtown.com", "286669312@qq.com"]
            //提取某个日期中的日
            var time = '2019-08-28'
            var array = time.match(/(\d{4})[-](\d{2})[-](\d{2})/) //加括号 将匹配到的字符串分组
            console.log(RegExp.$3) //28
            //提取邮箱中的用户名部分
            var email="shuaiyangtaishuaile@itcast.com.cn";
            //邮箱的正则表达式
            email.match(/([0-9a-zA-Z.-_]+)[@]([0-9a-zA-Z-_]+)(([.][a-zA-Z]+){1,2})/)
            console.log(RegExp.$1)//用户名 shuaiyangtaishuaile
            console.log(RegExp.$2)//邮箱名 itcast
            console.log(RegExp.$3)//域名 .com.cn

字符串replace方法替换

replace方法接收两个参数,第一个参数是原字符串中要被替换的,可以是字符串(只能替换一个)或者正则表达式(指定全局匹配g可以替换所有),第二个参数是要替换成的。

               var str="小苏好帅哦,真的是太帅了,帅,就是真帅";
               str=str.replace(/帅/g,"猥琐");
               console.log(str); //小苏好猥琐哦,真的是太猥琐了,猥琐,就是真猥琐

字符串删除首尾两端空格trim

trim只能删除首尾两端的空格,但是不能删除字符串中间的空格

               var str="  哦买噶的    ,太幸福了  ";
               str=str.trim();
               console.log("==="+str+"===");//===哦买噶的    ,太幸福了===

删除首尾两端和字符串中间的所有空格

               var str = "  哦买噶的    ,太幸福了  ";
               str = str.replace(/\s+/g, "");
               console.log("===" + str + "===");//===哦买噶的,太幸福了===

exec方法匹配字符串

exec方法接收一个参数:要进行匹配的字符串
在设置全局匹配的情况下,exec方法每次也只能返回一个匹配项。多次调用该方法,每次exec都会在字符串中继续查找匹配项,并返回一个数组,直到找不到匹配项返回null。
如果不设置全局匹配,多次调用该方法也只能返回该字符串中第一个匹配项。
返回的数组中,第一个是字符串中的匹配信息。

            var str = "中国移动:10086,中国联通:10010,中国电信:10000";
            var reg = /\d{5}/g;
            var array = reg.exec(str);
            while(array != null){
                console.log(array)
                console.log(array[0])
                array = reg.exec(str) //继续匹配
            }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值