JavaScript 8.16学习笔记

一:内置对象——时间

在 JavaScript 中,有一个内置的 Date 对象,用于处理日期和时间。

可以使用 new Date() 构造函数来创建一个 Date 对象,它会返回当前的日期和时间。

var currentDate = new Date();

var year = currentDate.getFullYear();
var month = currentDate.getMonth();
var day = currentDate.getDate();
var hours = currentDate.getHours();
var minutes = currentDate.getMinutes();
var seconds = currentDate.getSeconds();

console.log(year, month, day, hours, minutes, seconds); // 输出当前的年、月、日、小时、分钟、秒

我们使用 Date 对象的 getFullYear()getMonth()getDate()getHours()getMinutes() 和 getSeconds() 方法来获取当前的年、月、日、小时、分钟和秒,并将它们分别赋值给变量 yearmonthdayhoursminutes 和 seconds。然后,我们使用 console.log() 方法打印这些变量,它们会输出当前的年、月、日、小时、分钟和秒。

除了获取日期和时间的部分,Date 对象还提供了一些方法来设置日期和时间的各个部分,以及进行日期和时间的计算和比较。

练习:

发布时间:

  var str = "Wed Aug 19 11:40:10 +0800 2023"
     function sinaTime(str) {
       var dt1 = new Date()
      var dt2 = new Date(str)
      var asbdt = dt1 - dt2
       console.log(asbdt)
       if (0 > asbdt) {
       return "wrong"}
       else if (0 <= asbdt && asbdt < 60 * 1000) {
         return "刚刚"
       }
       else if (60 * 1000 <= asbdt && asbdt < 60 * 60 * 1000) {
         var m = Math.floor(asbdt / 1000 / 60)
         var m = new Date(asbdt).getMinutes()
      }
       else if (asbdt >= 60 * 60 * 1000) {
         var mo = (dt2.getMonth() + 1 + "").padStart(2, "0")
        var d = (dt2.getDate() + "").padStart(2, "0")
         var h = dt2.getHours().toString().padStart(2, "0")
         var mu = dt2.getMinutes().toString().padStart(2, "0")
         var s = dt2.getSeconds().toString().padStart(2, "0")
         return `${mo}-${d} ${h}:${mu}:${s}`
       }
    }
     var re = sinaTime(str)
     console.log(re)
    //静态方法
    console.log(Date.now())
    console.log(new Date().getTime())


    //修改一个时间点对象的信息
    var dt = new Date()
    dt.setMonth(4)
    dt.setMinutes(24)
    console.log(dt)
      //时间转化字符串
     var dt = new Date()
     console.log(dt.toString())
     console.log(dt.toLocaleString())
     console.log(dt.toLocaleDateString())
     console.log(dt.toLocaleTimeString())
     console.log(`${dt.getFullYear()}-${dt.getMonth()}-${dt.getDate()}`)

二:内置对象——正则表达式

正则表达式(Regular Expression)是一种用于匹配和操作字符串的强大工具。它是由字符和特殊字符组成的模式,用于描述字符串的特定模式。

在 JavaScript 中,可以使用内置的 RegExp 对象来创建和操作正则表达式。

下面是一些正则表达式的基本概念和语法:

  1. 字符匹配:正则表达式可以用来匹配特定的字符。例如,正则表达式 /hello/ 可以匹配字符串中的 "hello"。

  2. 字符类:使用方括号 [] 来定义一个字符类,表示匹配其中的任意一个字符。例如,正则表达式 /[aeiou]/ 可以匹配任意一个元音字母。

  3. 元字符:正则表达式中的一些字符具有特殊的含义,称为元字符。例如,. 表示匹配任意一个字符,* 表示匹配前面的字符零次或多次。

  4. 量词:使用量词来指定匹配的次数。例如,* 表示匹配零次或多次,+ 表示匹配一次或多次,? 表示匹配零次或一次。

  5. 边界匹配:使用 ^ 表示匹配字符串的开头,$ 表示匹配字符串的结尾。

  6. 模式修饰符:在正则表达式的末尾可以添加修饰符来改变匹配的行为。例如,i 表示不区分大小写,g 表示全局匹配。

创建方法

两种创建方式:

1、直接量

其本身是一个对象,表达的意义是一种规则。

(1)在两个斜杠中间写规则。

var  reg=/abc/;
var  str="abcd";
reg.test(str)  ;    //,检查在字符串str中有没有符合reg规则得字符

(2)在正则表达式得双斜杠后边还可以加字母i、g、m,表达其属性。

//i===》ignorcase,忽略大小写
//eg:
var  reg=/abce/i;
var  str="ABCEd";
reg.test(str)  ;

2、构造方法RegExp()

//使用new操作符,new RegExp();
//eg:
var reg=new RegExp("abc");
var str="abcd";
reg.test(str);
​
//在new RegExp("abc")函数里边也可以添加属性i、g、m
//eg:
var reg=new RegExp("abc","im");
var str="abcd";

使用new操作符,可以将已经存在的正则表达式用来给函数RegExp()传参,构造新的正则表达式。

//reg与reg1值相同,但两个两个值相互独立,即reg!=reg1
//eg:
var reg=/abce/m;
var reg1=new RegExp(reg);

若去除new操作符,将已经存在的正则表达式用来给函数RegExp()传参,只是传递引用,不能构建新的正则表达式,极少的用法。

三个属性i,g,m

正则表达式的属性(也称修饰符),可以在全局搜索中不区分大小写

i ---》(ignoreCase )执行匹配时忽略大小写

g---》(global)执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

m---》(multiline)执行多行匹配

//使用字符串的match方法
//eg:
var reg=/ab/;
var str="ababababab";
str.match(reg);//["ab"],只查找到第一个匹配值便返回
reg=/ab/g;
str.match(reg);//["ab","ab","ab","ab","ab"],全局查找,把所有匹配值均返回
方括号

方括号用于查找某个范围内的字符:

一个中括号代表一位,中括号里边的内容代表的是这一位可以取值的范围

//eg1: 
	var  reg=/[1234567890][1234567890][1234567890]/g;
	var  str="12309u98723zpoixcuypiouqwer";
	str.match(reg);
	
//eg2:
	var reg=/[ab][cd][d]/g;
	var str="abcd";
	str.match(reg);

//eg3:
	var reg=/[0-9A-Za-z][cd][d]/g;//相当于var reg=/[0-9A-z][cd][d]/g
	var str="ab1cd";
	str.match(reg);

括号里可以加入"|"表示"或"的意思,"|"操作符两边放匹配规则

//eg:
	var reg=/(abc|bcd)/g;
	var str="abc";
	str.match(reg);//["abc"];//该规则既能匹配出字符串"abc"
	str="bcd";
	str.match(reg);//["bcd"];//该规则又能匹配出字符串"bcd"
	reg=/(abc|bcd)[0-9]/g;  //匹配规则可以任意组合
	str="bcd2";
	str.match(reg);
元字符

元字符是拥有特殊含义的字符,元字符也可以组合放进中括号里去使用,一个元字符代表一位(\d|\D)

元字符描述
\w --word查找单词字符(字母+数字+下划线)
\W查找非单词字符==[^\w]
\d --data查找数字
\D查找非数字字符
\s --space查找空白字符
\S查找非空白字符
\b --border匹配单词边界 "today is friday"
\B匹配非单词边界
\t查找制表符
\n查找换行符
\f查找换页符
\v查找垂直制表符
\uXXXX查找以十六进制规定的Unicode字符
. --必记(点号)查找单个字符,除了换行和行结束符
量词

量词,代表数量的词(下面表达式的n代表的是一个匹配规则,n后边符号的符号定义量词规则)。

贪婪匹配。

量词描述
n+匹配任何包含至少一个n的字符串
n*匹配任何包含零个或多个n的字符串
n?匹配任何包含零个或一个n的字符串
n{X}匹配包含X 个n 的序列的字符串/\w{10}/
n{X,Y}匹配任何包含X 个至Y 个n 的序列的字符串/\w{6,16}/
n{X,}匹配包含至少X 个n 的序列的字符串
n$匹配任何结尾为n 的字符串
^n匹配任何开头为n 的字符串
S(?=n)匹配任何其后紧接指定字符串n 的字符串S abc(?!d)
S(?!n)匹配任何其后没有紧接指定字符串n 的字符串S
正则对象方法
方法描述
exec寻找字符串中是否含有检测的字符。返回:将找到的字符按数组返回。(execute)
test检测字符串中是否含有检测的字符。返回:boolean。
正则实例属性

1、ignoreCase 是否设置了i

2、global 是否设置了g

3、multiline 是否设置了m

4、source 字面量形式对应的字符串

5、lastIndex 开始搜索下一个匹配项的字符位置,默认0

支持正则表达式的String对象的方法
方法描述
search检索与正则表达式相匹配的值,返回匹配字符串的位置
match找到一个或多个正则表达式的匹配
replace替换与正则表达式匹配的字串
split

把字符串分割为字符串数组

贪婪匹配与非贪婪匹配

  1. 是否带有小数
    var objRegExp= /^\d+\.\d+$/;

  2. 校验是否中文名称组成

    var reg=/^[\u4E00-\u9FA5]{2,4}$/;

  3. 校验是否全由8位数字组成

    var reg=/^[0-9]{8}$/;

  4. 校验电话码格式

    var reg= /^((0\d{2,3}-\d{7,8})|(1[35847]\d{9}))$/;

  5. 校验邮件地址是否合法

    9391493618639@qq.com
    
    var reg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;

    练习:

     //练习一:写一个正则表达式,检验字符串首尾是否含有数字。
     const regex = /^[0-9](\w|\W)*[0-9]$/;
     const inputContent = "123AAF321a"; // 待匹配的字符串
     const result = regex.test(inputContent);
     console.log(result); // 输出结果为 true 或 false



     //练习二:写一个正则表达式,检验字符串首尾是否含都有数字。
   function checkDigits(str) {
   var pattern = /^\d.*\d$/;
   return pattern.test(str);
    }

   console.log(checkDigits('123abc456')); // 输出 true
   console.log(checkDigits('abc123')); // 输出 false
   console.log(checkDigits('abc123def')); // 输出 false
   console.log(checkDigits('123')); // 输出 true

     var obj = {}
     var re = /\d/i
     re.test()
     re.exec()
     console.log(re.ignoreCase, re.global, re.multiline, re.source)
     var reg2 = new RegExp(re.source)

输出结果:true false false '\\d'
    var reg=/ab/;
	var str="abababab";
	console.log(reg.lastIndex);//0
	console.log(reg.exec(str));//["ab",index:0,input:"abababab"]
	console.log(reg.lastIndex);//0
	console.log(reg.exec(str));//["ab",index:0,input:"abababab"]
reg=/(\w)\1(\w)\2/;//无global属性,反向索引
str="aabbgghh";
str.match(reg);//["aabb","a","b",index:0,input:"aabb"]

reg=/(\w)\1(\w)\2/g;//具有global属性
str="aabbgghh";
console.log(str.match(reg));//["aabb","gghh"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值