博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【深入浅出ES6】字符串与正则表达式
阅读量:5955 次
发布时间:2019-06-19

本文共 2061 字,大约阅读时间需要 6 分钟。

字符串新增部分功能

识别子字符串方法

  • includes()
  • startwith()
  • endwith()

三个方法均返回bool值,表示子字符串是否存在,且传入的参数必须为字符串,不能是正则表达式 如果希望找到对应出现的确定位置,则仍需要使用已有的indexOf()、lastIndexOf()方法

repeat()

快速生成重复性字符串,函数中的参数表示重复的次数

console.log("x".repeat(3));         // "xxx"console.log("hello".repeat(2));     // "hellohello"console.log("abc".repeat(4));       // "abcabcabcabc"复制代码

模板字面量 ``

  • 多行字符串:针对多行字符串的形式概念;
  • 基本的字符串格式化:将字符串部分替换为已存在的变量值的能力;
  • HTML 转义:能转换字符串以便将其安全插入到 HTML 中的能力

若你想在字符串中包含反引号,只需使用反斜杠( \ )转义即可,

let message = `\`Hello\` world!`;console.log(message); // "`Hello` world!"复制代码

在字符串中插入js表达式

let count = 10,price = 0.25,message = `${count} items cost ¥${(count * price).toFixed(2)}.`;console.log(message); // "10 items cost ¥2.50."复制代码

模板字符串也是js表达式,因此可以使用嵌套模板字符串

let name = "Nicholas",    message = `Hello, ${        `my name is ${ name }`    }.`;console.log(message);        // "Hello, my name is Nicholas."复制代码

标签模板(模板字面量的增强功能)

使用标签模板提供了对模板字面量再加工的能力

设置一个函数,将函数名放在模板字面量前面,作为模板的标签,该标签函数接收到模板字面量中设置的参数,传递到标签函数中

function tag(literals, ...arg){    console.log(literals) // ["", "my age is ,and your name is ", ""]    console.log(arg) // [22, "tom"]    return 'from tag function'   }    let age = 22;    let name = 'tom'    let result = tag`${ age }my age is ,and your name is ${name}`   console.log(result)复制代码

tag为标签函数

  • 第一个参数literals为数组,元素为模板字面量中被变量分割开的每一个字符串 ["", "my age is ,and your name is ", ""]
  • 第一个参数之后的参数,为模板字面量中依次使用的变量,一般常用 结构符号... 将其放入一个数组中 [22, "tom"]
  • 标签函数中的返回作为标签模板最终的返回值

正则表达式新增部分功能

复制正则表达式 new RegExp()

支持传入第二个参数,表示正则表达式的标志(i:忽略大小写、g:全局匹配),第二个参数会覆盖原有正则中的标志

var re1 = /ab/i,    // throws an error in ES5, okay in ES6    re2 = new RegExp(re1, "g");console.log(re1.toString());            // "/ab/i"console.log(re2.toString());            // "/ab/g"console.log(re1.test("ab"));            // trueconsole.log(re2.test("ab"));            // trueconsole.log(re1.test("AB"));            // trueconsole.log(re2.test("AB"));            // false复制代码

获取正则表达式标志位flags属性

var re = /ab/g;console.log(re.source); // "ab"console.log(re.flags); // "g"复制代码

转载于:https://juejin.im/post/5c7cc1fae51d457c54732641

你可能感兴趣的文章
js--字符串reverse
查看>>
面试题
查看>>
Facebook 接入之获取各个配置参数
查看>>
android ant Compile failed; see the compiler error
查看>>
项目经理笔记一
查看>>
[原]Jenkins(三)---Jenkins初始配置和插件配置
查看>>
Cache Plugin 实现过程
查看>>
TCP服务器端口转发: netsh
查看>>
nginx实现rtmp,flv,mp4流媒体服务器
查看>>
46.tornado绑定域名或者子域名泛域名的处理
查看>>
文本过滤--sed 1
查看>>
PHP CURL并发,多线程
查看>>
ES 概念及动态索引结构和索引更新机制
查看>>
iOS 开发百问(2)
查看>>
MySQL for Mac 安装和基本操作(包含后期的环境变量设置)
查看>>
Linux及windows下常见压缩程序的压缩能力对比
查看>>
JAVAEE-junit测试hibernate里的方法(hibernate交给spring管理)的问题
查看>>
MOTO MB860 国行2.3.5优化增强ROM_Top_T5_end(经典收藏版)
查看>>
C#学习经典(二)---MVC框架(Model view Controller)
查看>>
log4j配置文件说明
查看>>