Day05——JS:内建对象之Date、Math、字符串、正则表达式

一、Date

  • 日期的对象,在JS中通过Date对象来表示一个时间
  • 创建对象

创建一个当前的时间对象

var d = new Date();

创建一个指定的时间对象

var d = new Date("月/日/年 时:分:秒");
  • 方法:

getDate()

当前日期对象是几日(1-31)

getDay()

  • 返回当前日期对象是周几(0-6)
    0 周日
    1 周一 …

getMonth()

  • 返回当前日期对象的月份(0-11)
    0 一月
    1 二月 …

getFullYear()
从 Date 对象以四位数字返回年份。

getHours()
返回 Date 对象的小时 (0 ~ 23)。

getMinutes()
返回 Date 对象的分钟 (0 ~ 59)。

getSeconds()
返回 Date 对象的秒数 (0 ~ 59)。

getMilliseconds()
返回 Date 对象的毫秒(0 ~ 999)。

getTime()

  • 返回当前日期对象的时间戳
  • 时间戳,指的是从1970年月1日 0时0分0秒,到现在时间的毫秒数
  • 计算机底层保存时间都是以时间戳的形式保存的

Date.now()

  • 可以获取当前代码执行时的时间戳

示例:

         //利用时间戳来测试代码的执行的性能
		//获取当前的时间戳
		var start = Date.now();
			
		for(var i=0 ; i<100 ; i++){
			console.log(i);
		}
			
		var end = Date.now();
		console.log("执行了:"+(end - start)+"毫秒");		

二、Math

  • Math和其他的对象不同,它不是一个构造函数,它属于一个工具类不用创建对象,它里边封装了数学运算相关的属性和方法。我们可以直接使用它来进行数学运算相关的操作

  • 方法:

Math.PI
常量,圆周率

Math.abs()
绝对值运算

Math.ceil()
向上取整

Math.floor()
向下取整

Math.round()
四舍五入取整

Math.random()
默认生成一个0-1之间的随机数

生成一个x-y之间的随机数:

Math.round(Math.random()*(y-x)+x);

Math.pow(x,y)
求x的y次幂

Math.sqrt()
对一个数进行开方

Math.max()
求多个数中最大值

Math.min()
求多个数中的最小值

三、包装类

  • 在JS中为我们提供了三个包装类:
    String() Boolean() Number()
  • 通过这三个包装类可以将基本数据类型转换为对象

例子:

	var num = new Number(2);
	var str = new String("hello");
	var bool = new Boolean(true);

注:

  • 但是在实际应用中千万不要这么干
  • 当我们去操作一个基本数据类型的属性和方法时,解析器会临时将其转换为对应的包装类,然后再去操作属性和方法,操作完成以后再将这个临时对象进行销毁。

四、字符串的相关的方法

length
获取字符串的长度

charAt()
根据索引获取指定的字符

charCodeAt()
根据索引获取指定的字符编码

String.fromCharCode()
根据字符编码获取字符

indexOf()
lastIndexOf()
从一个字符串中检索指定内容

  • 需要一个字符串作为参数,这个字符串就是要检索的内容,如果找到该内容,则会返回其第一次出现的索引,如果没有找到则返回-1。
  • 可以指定一个第二个参数,来表示开始查找的位置
  • indexOf()是从前向后找;lastIndexOf()是从后向前找

slice()

  • 可以从一个字符串中截取指定的内容,并将截取到内容返回,不会影响原变量
  • 参数:
    第一个:截取开始的位置(包括开始)
    第二个:截取结束的位置(不包括结束)
    <script type="text/javascript">
        str = "abcdeijk";
        
        result = str.slice(1, 3);  //bc
        result1 = str.slice(1, -2); //bcdei     
    </script>

注:可以省略第二个参数,如果省略则一直截取到最后;可以传负数,如果是负数则从后往前数

substr()
和slice()基本一致,不同的是它第二个参数不是索引,而是截取的数量

<script type="text/javascript">

        str = "abcdefg";
        result = str.substr(3, 2); //de
 </script>

substring()
和slice()基本一致,不同的是它不能接受负值作为参数,如果设置一个负值,则会自动修正为0,substring()中如果第二个参数小于第一个,自动调整位置。

toLowerCase()
将字符串转换为小写并返回

str = "ABCDEFG";
result = str.toLowerCase();

toUpperCase()
将字符串转换为大写并返回

split()

  • 可以根据指定内容将一个字符串拆分为一个数组
  • 参数:
    需要一个字符串作为参数,将会根据字符串去拆分数组(示例1)
    可以接收一个正则表达式,此时会根据正则表达式去拆分数组(示例2)

示例1:

 <script type="text/javascript">

        str = "abcdefg";
        result = str.split("d");  //结果是 abc,efg

        /*
         * 如果传递一个空串作为参数,则会将每个字符都拆分为数组中的一个元素
         */
        result = str.split(""); //a,b,c,d,e,f,g

</script>

示例2:

在这里插入图片描述

match()

  • 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
  • 默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索,我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
  • 可以为一个正则表达式设置多个匹配模式,且顺序无所谓
  • match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果

在这里插入图片描述

replace()

  • 可以将字符串中指定内容替换为新的内容
  • 参数:
    第一个:被替换的内容,可以是一个正则表达式
    第二个:替换的新内容,默认只会替换第一个可以使用全局匹配将所有符合规则的替换
       str = "1a2s3d5f6g";
       result = str.replace(/[a-z]/g, "");
       console.log(result);  //结果是12356

search()

  • 可以搜索字符串中是否含有指定内容
  • 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
  • 它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
  • serach()只会查找第一个即使设置全局匹配也没用
	str = "hello abc hello aec afc";
   /*
	* 搜索字符串中是否含有abc 或 aec 或 afc
	*/
	result = str.search(/a[bef]c/);	
	console.log(result);

五、正则表达式

正则用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则,也可以将一个字符串中符合规则的内容提取出来。

创建正则表达式

Way1:使用构造函数创建

var reg = new RegExp("正则表达式","匹配模式");

示例:

<script type="text/javascript">

      var reg = new RegExp("a","i");  
          
</script>

Way2:使用字面量的方式创建

var reg = /正则表达式/匹配模式

示例:

<script type="text/javascript">

      var reg = /a/i;  
          
</script>

语法

匹配模式:

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

注:设置匹配模式时,可以都不设置,也可以设置1个,也可以全设置,设置时没有顺序要求

正则语法:

		| 或
		[] 或
		[^ ] 除了
		[a-z] 小写字母
		[A-Z] 大写字母
		[A-z] 任意字母
		[0-9] 任意数字

test()方法

可以用来检查一个字符串是否符合正则表达式
如果符合返回true,否则返回false

示例1:

  <script type="text/javascript">
  
       //匹配除了a或者b的任意字符
       var reg = /[^ab]/;
       document.write(reg.test("a123"));  //返回true
        
  </script>

示例2:

 <script type="text/javascript">
 
	 //检查一个字符串中是否含有 abc 或 adc 或 aec
	 reg = /a[bde]c/;
	 document.write(reg.test("afc"));  //返回false
	 
 </script>

元字符

元字符表

在正则表达式中使用\作为转义字符
\. 来表示.

\\ 表示\

注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中转义字符,
如果要使用\则需要使用\\来代替

	var reg = /\./;   //等价于reg = new RegExp("\\.");
	reg = /\\/;  //等价于reg = new RegExp("\\\\");

练习1:

创建一个正则表达式,用来检查一个字符串是否是一个合法手机号

手机号的规则:

1 3 567890123 (11位)

  1. 以1开头
  2. 第二位3-9任意数字
  3. 三位以后任意数字9个
<script type="text/javascript">
		var phoneStr = "13067890123";	
		var phoneReg = /^1[3-9][0-9]{9}$/;	
		console.log(phoneReg.test(phoneStr));
</script>

注:如果在正则表达式中同时使用^ $则要求字符串必须完全符合正则表达式

练习2:
创建一个正则表达式检查一个字符串中是否含有单词child

<script type="text/javascript">		
		var reg = /\bchild\b/;		
		console.log(reg.test("hello child "));
</script>

练习3:
接收一个用户的输入,去除掉字符串前后的空格,不要去除字符串中间的空格。

    <script type="text/javascript">
        //var str = prompt("请输入你的用户名:");
        var str = "              he      llo                ";

        //去除掉字符串中前后的空格
        //去除空格就是使用""来替换空格
        console.log(str);

        //str = str.replace(/\s/g, "");  此方法将he    llo之间的空格也去掉了,不符合我们的需求

        //去除开头的空格
        //str = str.replace(/^\s*/, "");
        //去除结尾的空格
        //str = str.replace(/\s*$/, "");
        // /^\s*|\s*$/g 匹配开头和结尾的空格
        str = str.replace(/^\s*|\s*$/g, "");
        
        console.log(str);
    </script>

练习4:

电子邮件

<script type="text/javascript">
		
		/*
		 * 电子邮件
		 * 	hello  .nihao          @     abc  .com.cn
		 * 
		 * 任意字母数字下划线    .任意字母数字下划线  @   任意字母数字     .任意字母(2-5位)   .任意字母(2-5位)
		 * 
		 * \w{3,}  (\.\w+)*  @  [A-z0-9]+  (\.[A-z]{2,5}){1,2}
		 */
		
		var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
		
		var email = "abc.hello@163.com";
		
		console.log(emailReg.test(email));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值