JavaScript第15天

1、正则表达式:定义字符串中字符出现规则的表达式

        何时使用:切割  替换  [验证]

        如何使用:

                语法:/正则表达式/

                 1、最简单的正则就是关键字原文

                        如:"no"—>/no/后缀

                        后缀:g—找全部        i—忽略大小写

                2、备选字符集:

                        1、语法:/^[备选字符集]$/

                        2、强调:

                                1、一个中括号只管以为字符

                                2、问题:

                                        正则表达式默认只要满足就不管后续,而做验证希望从头到尾完全匹配

                                        解决:前加^后加$,两者同时使用,代表从头到尾完全匹配/^[备选字符集]$/—只做验证

                        3、特殊:

                                如果备选字符集中的ASCII码是连续的,那么可用-省略掉中间部分

                                        如:

                                                一位数字:[0-9];

                                                一位字母:[A-Za-z];

                                                一位数字、字母、下划线:[0-9A-Za-z_ ];

                                                一位汉字:[\u4e00-\u9fa5];

                                                 除了xxx之外的:[^0-9]-很少使用,范围太广

                 3、预定义字符集:提前定义一些字符集,方便程序员—简化备选字符集

                        1、一位数字:\d===>[0-9]

                        2、一位数字、字母、下划线:\w===>[0-9A-Za-z_ ]

                        3、一位空白字符:\s

                        一位除了换行外的任意字符:. —很少使用,范围太广

                        建议:优先使用预定义字符集,预定义满足不了我们再用备用字符集补充

                        注意:不管备选字符集,还是预定义字符集,一个只能管一位

                4、量词:规定一个字符集出现的次数

                        1、有明确数量

                                字符集{n,m}:前面相邻的字符集,至少n个,最多m个

                                字符集{n,}:前面相邻的字符集,至少n个,多了不限

                                字符集{n}:前面相邻的字符集,必须n个

                        2、无明确数量

                                字符集?:前面相邻的字符集,可有可无,最多一个

                                字符集*:前面相邻的字符集,可有可无,多了不限

                                字符集+:前面相邻的字符集,至少一个,多了不限

                5、选择和分组

                        选择:在多个规则中选一个

                                规则1|规则2

                        分组:将多个字符集临时组成一组子规则

                                (规则1|规则2)

                6、指定匹配位置

                        ^:开头

                        $:结尾

                        特殊:两者同时使用,前加^后加$,表示从头到尾要求完全匹配—验证

                7、密度强度验证

                        预判公式:

                                (?![0-9]+$)->不能全由数字组成,可能有大写、小写、汉字、日文、特殊符号...

                                (?![a-z]+$)->不能全由小写组成,可能有数字、汉字、大写、日文、特殊符号...

                                (?![0-9a-z]+$)->不能全由数字组成、也不能全由小写组成、也不能全由数字和小写组成

<script>
    let m="12Aa"
    let reg=/^(?![0-9a-z]+$)(?![0-9A-Z]+$)[0-9A-Za-z]{2,4}$/;
    console.log(reg.test(m));
</script>

2、支持正则表达式的字符串API

        1、切割:let arr= str.split("固定切割符"/正则表达式(RegExp));

        2、替换

                1、基本替换:

                        str=str.replace(/正则表达式/后缀,"新内容");

                        //replace支持正则,并且搭配上后缀g就可以找到全部

                        //缺陷:替换的新内容是固定的

                2、高级替换

                        str=str.replace(/正则表达式/后缀,function(a,b,c){

                                console.log(a);//正则匹配到的关键字

                                console.log(b);//正则匹配到的关键字的下标

                                console.log(c);//原字符串

                                return 判断a关键字的长度,而返回不同星星的数量

                        })

                3、格式化

  <script>
    let id="500381201203078548";
    let reg=/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/;
    let id1=id.replace(reg,function(a,b,c,d,e,f,g,h){
      console.log(a);//正则匹配到的关键字
      console.log(b);//第1个分组获得的内容会保存在第2个形参之中
      console.log(c);//第2个分组获得的内容会保存在第3个形参之中
      console.log(d);//第3个分组获得的内容会保存在第4个形参之中
      console.log(e);//第4个分组获得的内容会保存在第5个形参之中
      console.log(f);//第5个分组获得的内容会保存在第6个形参之中
      console.log(g);//正则匹配到的关键字的下标
      console.log(h);//原字符串
		return  c+"年"+d+"月"+e+"日";
    })
    console.log(id1);
</script>

                        问题:何时加^后加$,何时该添加后缀g?

                                1、前加^后加$—验证

                                2、替换,希望替换所有—必须加g

       3、正则对象

                1、创建:

                        1、直接量:let reg=/正则表达式/后缀

                        2、构造函数:let reg=new RegExp("正则表达式","后缀");

                2、API

                        验证:let bool=reg.test(用户输入的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值