JavaScript的字符串与正则表达式的使用

·  阅读 70

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

js中的包装类

在代码中我们可以调用基本数据的方法, 如toString()方法, 是因为包装类的存在

当我们调用基本数据类型的方法时, 解析器临时为我们将之转换为对应的包装类型, 然后操作属性和方法, 这个过程完成以后, 再销毁其临时对象

        let num = Number(3); // 数值型对象
        let b = Boolean(true); // 布尔型的对象
        let str = String('shaosiming'); // 字符串型的对象
        console.log(typeof num + ':' + num);
        console.log(typeof b + ':' + b);
        console.log(typeof str + ':' + str);
复制代码

js中的常用字符串的方法

indexOf可以接收两个参数, 第一个参数为要检索的内容, 第二个参数为要检索的开始索引

如果不传第二个参数, 则默认从索引0开始检索, 返回检索到的第一个参数第一次出现的位置

slice截取一段指定位置的内容, 接收两个参数, 第一个参数为开始索引, 第二个参数为结束索引.

注意: 包括开始索引的字符两不包括结束索引的字符

如果省略第二个参数, 则从开始索引一起截取到最后, 如果第二个参数是负数, 从后往前计算索引

        let name = 'shaosiming';

        // length
        console.log(name.length); // 10

        // 获取索引对应的字符
        console.log(name[2]);

        console.log(name.charAt(3));

        // 获取对应字符的unicode编码
        console.log(name.charCodeAt(3));

        // 根据字符编码获取字符
        console.log(String.fromCharCode(888));

        // 检索指定内容的索引
        console.log(name.indexOf('s'));
        console.log(name.indexOf('s', 1));
        console.log(name.lastIndexOf('s'));
        console.log(name.lastIndexOf('s', 1));

        // 截取一段内容
        console.log(name.slice(2, 4));

        console.log(name.substr(2, 4));

        console.log(name.substring(2, 4));

        // 大小写
        console.log(name.toUpperCase());
        console.log(name.toUpperCase().toLowerCase());

        // 将字符串转换为数组
        console.log('123, 456, 789'.split(','));
复制代码

正则表达式

根据一定的规则来判断一个字符串是否符合该规则, 或者根据一定规则将一个字符串中的内容提取出来

正则的匹配模式

i: 忽略大小写

g: 全局匹配

正则的语法

| 或
[][^ ] 除了...
[a-z] 小写字母
[A-Z] 大写字母
[A-z] 任意字母
[0-9] 任意数字
^x 以...开头
X$ 以...结束
{n} 正好n次
{m,n} m到n次
{m,} 至少m次
+ {1,}至少1次
? {0,1} 0次或1次
* {0,} 0次或多次
复制代码

带转义的字符

\ 在字符串和正则表达式中表示转义
. 表示任意字符
. 表示.
\ 表示\
\w {A-z0-9_} 代表字母数字下划线
\W {^A-z0-9_} 代表除了字母数字下划线
\d 任意数字
\D 除了数字
\s 空格
\S 除了空格
\b 单词边界
\B 除了单词边界
复制代码

正则表达式的创建

有两种方式

每一种, let reg = new RegExp('正则表达式');

第二种, let reg = /正则表达式/;

        // let reg = new RegExp('^1[2-9][0-9]{9}$')
        

        let reg = /^1[2-9][0-9]{9}$/
        console.log(reg.test('123456789012'));

        /*
            邮箱@前面的部分 至少3个字符 \w{3,}
            邮箱@前面的部分 可以包含.和字母数字下划线, 可以没有也可以有多个 (.\w)*
            @ 只有一个
            邮箱@后面域名部分 字母数字 [A-z0-9]+
            邮箱@后面顶级域名部分 (.[A-z]{2,5}){1,3}
        */
        let reg2 = /^\w{3,}(.\w)*@[A-z0-9]+(.[A-z]{2,5}){1,3}$/
        console.log(reg2.test('abc_abc@163.com'));
复制代码

字符串方法与正则表达式结合使用

        // 将字符串通过正则的规则转换为数组
        console.log('1a2b3c4d5'.split(/[A-z]/));

        // 在字符串中通过正则的方式搜索内容是否存在
        console.log('1a3143222'.search(/1[0-9]3/));

        // 将字符串中匹配上的内容提取出来放到一个数组中
        console.log('1a2B3c4D5'.match(/[a-z]/ig));

        // 将字符串中匹配的内容更换为新的字符串
        console.log('1a2B3c4D5'.replace(/[a-z]/gi, '#'));
复制代码

Math

Math相当于一个工具类, 我们可以直接使用Math这个类对象来直接调用它的方法

        // π
        console.log(Math.PI);

        // 绝对值
        console.log(Math.abs(-3));

        // 向上取整
        console.log(Math.ceil(1.001));

        // 向下取整
        console.log(Math.floor(1.999));

        // 四舍五入
        console.log(Math.round(1.23));

        console.log(Math.round(1.51));

        // x的y次幂
        console.log(Math.pow(2, 3));

        // 开方
        console.log(Math.sqrt(16));

        // 求最大值
        console.log(Math.max(1, 2, 3, 4, 5));

        // 求最小值
        console.log(Math.min(1, 2, 3, 4, 5));

        // 随机数
        console.log(Math.round(Math.random() * 10));

        // x到y的随机数
        // Math.round(Math.random() * (y-x) + x)
        console.log(Math.round(Math.random() * (15-11) + 11));
复制代码

Date

在创建指定日期对象的时候, 格式是这样的

new Date('月/日/年, 时:分:秒');

注意: getDay()方法星期日-星期六是0 - 6

        let now = new Date();

        console.log(now);

        // 获取年
        console.log(now.getFullYear());

        // 获取月
        console.log(now.getMonth());

        // 获取日
        console.log(now.getDate());

        // 获取星期几
        console.log(now.getDay());

        // 获取时
        console.log(now.getHours());

        // 获取分
        console.log(now.getMinutes());

        // 获取秒
        console.log(now.getSeconds());

        // 获取毫秒
        console.log(now.getMilliseconds());

        // 转换为时间戳
        console.log(now.getTime());

        // 当前时间的时间戳
        console.log(Date.now());

        // 创建一个指定的日期对象
        let date = new Date('03/28/2022 08:30:45');
        console.log(date);
复制代码
分类:
前端
收藏成功!
已添加到「」, 点击更改