ES6 基础总结 (字符串和部分正则)

字符串的扩展

1. 字符的 Unicode 表示法

  1. 有了这种表示法之后,JavaScript 共有 6 种方法可以表示一个字符。
		'\z' === 'z'  // true
		'\172' === 'z' // true
		'\x7A' === 'z' // true
		'\u007A' === 'z' // true
		'\u{7A}' === 'z' // true

2. string.formCodePointAt()

ES6 提供了String.fromCodePoint方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode方法的不足。在作用上,正好与codePointAt方法相反。

3. 字符串的遍历器接口

1. ES6 为字符串提供了遍历器接口,使得字符串可以被 `for...of`循环遍历
2. 除了遍历字符串外,相比较于传统的 for 循环,还可以识别大于`0xFFFF`的码点

4. normalize()

1. ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。

5. includes(), startsWith(), endsWith()

1. 三者均是用来判断一个字符串是否包含在另一个字符串中的。(`indexOf`)
2. 均会返回 `boolean` 值,后两者表示是否在开头和结尾
3. 可传入两个参数,第二个参数为开始搜索的索引位置 (如果是 endWidth() 则表示前 n    个字符)。

6. repeat() String.repeat(Number)

1. 将原字符串重复多少次,返回一个新的字符串。
2. 小数会被取整,负数或者无穷会报错。
3. NaN 会被认为是 0

7. padStart() padEnd() ES7 String.padStart(Number, String2)

1. 使用 String2 字符串将 String 补全值 Number 位,padStart 用于头部补全。
2. 如果 `String2.length > String.length` 返回 String,操作不生效。
3. 如果 `String2.length + String.length > Number` 截取 String2 前几位。
4. 第二个参数不传时,默认用空格补全。
5. 另一个用途是提示字符串格式。
		12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
		'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

8. matchAll()

 matchAll方法返回一个正则表达式在当前字符串的所有匹配

9. 模板字符串

				`string  ${} string`
  • {} 中可以存放函数执行。
  • 会保留所用空格

10. 模板编译 (有点儿复杂)

1. 通过模板字符串生成正式模板
2. 模板字符串也可以紧随函数后,视为将字符串传入函数并执行。  
	```
	alert`123`  ==   alert(123);
	```

3. “标签模板”的一个重要应用,就是过滤 HTML 字符串,防止用户输入恶意内容。
4.	标签模板的另一个应用,就是多语言转换(国际化处理)。

11. String.raw()

1. 模板字符串的反解意。
```
	String.raw`Hi\\n`
	// 返回 "Hi\\\\n"
```

正则的扩展

1. RegExp 构造函数

  • 修复了 ES5 的小问题
    	new RegExp(/abc/ig, 'i').flags
    	// "i"
    	// 上面代码中,原有正则对象的修饰符是ig,它会被第二个参数i覆盖。
    

2. 字符串的正则方法

字符串共有四个方法:	match()   、 replace() 、 search()  、 split()
ES6 将其全部定义在 `RegExp` 对象上

3. u 修饰符

  • ES6 对正则表达式添加了u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符。也就是说,会正确处理四个字节的 UTF-16 编码。
  • 正则实例对象新增unicode属性,表示是否设置了u修饰符。

4. y 修饰符 (粘连修饰符) sticky

  • 约等于 /g 修饰符,区别在于 /g 为只要后面有就会接着进行,而 /y 必须从剩余的第一项开始匹配,剩余的第一项不符合,则为 null。
  • 单单一个y修饰符对match方法,只能返回第一个匹配,必须与g修饰符联用,才能返回所有匹配。
	'a1a2a3'.match(/a\d/y) // ["a1"]
	'a1a2a3'.match(/a\d/gy) // ["a1", "a2", "a3"]
  • y修饰符的一个应用,是从字符串提取 token(词元),y修饰符确保了匹配之间不会有漏掉的字符。
  • 与y修饰符相匹配,ES6 的正则实例对象多了sticky属性,表示是否设置了y修饰符。
	var r = /hello\d/y;
	r.sticky // true

ES6 为正则表达式新增了 RegExp.prototype.flags属性,返回正则表达式的修饰符

5. s 修饰符 (ES2018加入)

    s修饰符,使得.可以匹配任意单个字符。

	/foo.bar/s.test('foo\nbar') // true

    这被称为dotAll模式,即点(dot)代表一切字符。所以,正则表达式还引入了一个dotAll属性,返回一个布尔值,表示该正则表达式是否处在dotAll模式。
    /s修饰符和多行修饰符/m不冲突,两者一起使用的情况下,.匹配所有字符,而^和$匹配每一行的行首和行尾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值