前端学习第二阶段Day16

目录

        1.概念:

        2.定义方法:

        3.常用方法:

                1.test

                2.search

                3.match

                4.replace

                5.exec

        4.常用元字符~特殊字符

        5.连接符-范围

        6.限定符-量词

        7.定位符-边界

        8.修饰符

        9.特殊转义符

        10.优先级顺序

2.贪婪模式与非贪婪模式

        1.贪婪模式【默认】

        2.非贪婪模式

案例:


1.正则表达式

        1.概念:

                用某种模式去匹配一类字符串的公式

        2.定义方法:

                显式定义:【构造函数】

            let 变量名=new RegExp('正则表达式模式')

                隐式定义:【字面量】

         let 变量名=/正则表达式模式/

        3.常用方法:

                1.test

                 正则去匹配字符串,如果匹配成功就返回真,否则返回假

                正则.test(字符串)

                2.search

                        正则去匹配字符串,如果匹配成功就返回成功的位置,否则返回-1

                字符串.search(正则)

                3.match

                        正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,否则返回null

                字符串.match(正则)

                4.replace

                        正则去匹配字符串,匹配成功的字符串被新的字符串替换

                 str.replace(正则,新字符串)

                5.exec

                 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,index:表示第一个匹配的字符在原字符串中的位置,input:表示原字符串,group:表示当初中命令的分组时匹配到的分组对象,如果匹配不成功就返回null

                正则.exec(字符串)

        4.常用元字符~特殊字符

元字符说明
\d匹配数字,相当于[0-9]
\D匹配非数字,相当于[^0-9]
\w匹配字母或数字或汉字或下划线
\W匹配任意不是字母、数字、汉字或下划线的字符
\s匹配任意的空白符,如空格、换行符、制表符等
\S匹配任意不是空白符的字符
.(点号)匹配除了换行符以外的任意字符\n
[...]匹配方括号在的所有字符
[^...]匹配非方括号中的所有字符

        5.连接符-范围

连接符说明
[0-9]匹配数字,等价于\d
[a-z]匹配英文小写字母
[A-Z]匹配英文大写字母
[0-9a-zA-Z]匹配数字或英文字母

        6.限定符-量词

限定符说明
+重复1次或更多次
*重复0次或更多次(任意次)
重复0次或1次
{n}重复n次
{n,}重复n次或更多次(最少n次)
{n,m}重复n到m次

        7.定位符-边界

        

定位符说明
^限定开始位置的字符
$限定结尾位置的字符
\b限定单词(字)边界的字符---空格
\B限定非单词(字)边界的字符

        8.修饰符

                1.g:global全文搜索,不添加,搜索到第一个匹配停止

                2.i:ignore case 忽略大小写,默认大小写敏感

                3.m:multiple lines 多行搜索

        9.特殊转义符

                \f 匹配换页符

                \n 匹配换行符

                \r 匹配回车符

                \t 匹配制表符

                \v 匹配垂直制表符

                \\ 匹配\

                \" 匹配"

                \' 匹配 '

                \. 匹配 .

        10.优先级顺序

运算符或表达式说明
\转义符
()、(?:)、(?=)、[]圆括号或方括号
*、+、?、{n}、{n,}、{n,m}限定符
^、$、\b、\B位置和顺序
|选择符、“或”运算

2.贪婪模式与非贪婪模式

        1.贪婪模式【默认】

                正则引擎尽可能多的重复匹配字符

        2.非贪婪模式

                正则引擎尽可能少的重复匹配字符。可以用?、+?、??等

案例:

        1.已知邮箱字符串'zhousir028@qq.com'写正则匹配该邮箱字符串是否符合邮箱格式?

邮箱格式要求:

                1. 必须包含@符号

                2. @符号左右两边可以字母或数字或字母数字组合

                3. 以.com结尾

<script>
 function test01(){
        let regs=new RegExp("[0-9a-zA-Z]+@[0-9a-zA-Z]+.com$")
        const str='wuyuling09@qq.com'
        let reg=/[0-9a-zA-Z]+@[0-9a-zA-Z]+\.com$/
        let bool=reg.test(str)
        alert(bool)
        alert(`构造函数${regs.test(str)}`)
    }
   test01()
</script>

         

        2. 将字符串中单词is替换成 'are'字符串如下:

                'He is a boy, This is a dog.Where is she?'

<script>
   function test05(){
        const str='He is a boy, This is a dog.Where is she?'
        let reg=/\bis\b/mg
        var str1=str.replace(reg,'are')
        alert(`str: ${str}\n str1:${str1}`)
    }
  test05()
</script>

        3.匹配日期时间  把年月日---月日年


    <script>
        const str = '2022-09-05'  //-> 09/05/2022
        const reg = /(\d{4})-(\d{2})-(\d{2})/
        let newStr = str.replace(reg,'$2/$3/$1')
        console.log(newStr)

           //数组与反引用
    </script>

        4.点击元素块移动----运动函数

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>封装运动函数</title>
		<style>
			* {
				padding: 0;
				margin: 0;
			}
			div {
				position: absolute;
				top: 100px;
				left: 600px;
				width: 100px;
				height: 100px;
				background-color: skyblue;
			}
            p{
                position: absolute;
                top: 300px;
                left: 600px;
                width: 80px;
                height: 80px;
                background-color: pink;
            }
		</style>
	</head>
	<body>
		<div></div>
        <p></p>

		<script>
            const divEle = document.querySelector('div')
            divEle.addEventListener('click',function(){
                move(divEle,400) 
            })

            const pEle = document.querySelector('p')
            pEle.addEventListener('click',function(){
                move(pEle,-300)
            })


            /*
              运动函数
              ele 运动元素
              offset 是运动总距离,偏移量  正向右,负向左
            */
			function move(ele, offset) {
				let time = 1000 // 总时间
				let rate = 50 // 速度
				let distance = (offset * rate) / time // 每次移动距离

				//初始化当前位置
				ele.style.left = window.getComputedStyle(ele).left
				let init = parseInt(ele.style.left)

				// 计算目标位置
				let goal = init + offset

				const timer = setInterval(function () {
					if (parseInt(ele.style.left) == goal ||
						Math.abs(Math.abs(goal) - Math.abs(parseInt(ele.style.left))) < Math.abs(distance)
					) {
                        // 如果当前位置与目标位置的距离小于移动的距离,直接到达目标位置
						ele.style.left = goal + 'px' 
						clearInterval(timer)
					} else {
						ele.style.left = parseInt(ele.style.left) + distance + 'px'
					}
				}, rate)
			}
		</script>
	</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值