字符串对象的`split`方法按照正则规则分割字符串,返回一个由分割后的各个部分组成的数组。
~~~
str.split(separator, [limit])
~~~
该方法接受两个参数,第一个参数是正则表达式,表示分隔规则,第二个参数是返回数组的最大成员数。
~~~
// 非正则分隔
'a, b,c, d'.split(',')
// [ 'a', ' b', 'c', ' d' ]
// 正则分隔,去除多余的空格
'a, b,c, d'.split(/, */)
// [ 'a', 'b', 'c', 'd' ]
// 指定返回数组的最大成员
'a, b,c, d'.split(/, */, 2)
[ 'a', 'b' ]
~~~
上面代码使用正则表达式,去除了子字符串的逗号后面的空格。
~~~
// 例一
'aaa*a*'.split(/a*/)
// [ '', '*', '*' ]
// 例二
'aaa**a*'.split(/a*/)
// ["", "*", "*", "*"]
~~~
上面代码的分割规则是0次或多次的`a`,由于正则默认是贪婪匹配,所以例一的第一个分隔符是`aaa`,第二个分割符是`a`,将字符串分成三个部分,包含开始处的空字符串。例二的第一个分隔符是`aaa`,第二个分隔符是0个`a`(即空字符),第三个分隔符是`a`,所以将字符串分成四个部分。
如果正则表达式带有括号,则括号匹配的部分也会作为数组成员返回。
~~~
'aaa*a*'.split(/(a*)/)
// [ '', 'aaa', '*', 'a', '*' ]
~~~
上面代码的正则表达式使用了括号,第一个组匹配是`aaa`,第二个组匹配是`a`,它们都作为数组成员返回。
- 第一章:变量与作用域
- 第一节:变量
- 第二节:执行环境及作用域
- 第三节:JS 解析机制
- 第四节:垃圾收集
- 第二章:深入函数
- 第一节:概述
- 第二节:函数声明
- 第三节:函数调用
- 第四节:函数参数
- 第五节:函数返回值
- 第三章:面向对象
- 第一节:概述
- 第二节:对象声明
- 第三节:this 关键字
- 第四节:对象遍历
- 第五节:对象继承
- 第六节:模块
- 第四章:正则表达式
- 第一节:概述
- 第二节:实例属性
- 第三节:实例方法
- 第一课时:测试
- 第二课时:执行
- 第四节:匹配规则
- 第一课时:字面量字符和元字符
- 第二课时:转义符
- 第三课时:特殊字符
- 第四课时:字符类
- 第五课时:预定义模式
- 第六课时:重复类
- 第七课时:量词符
- 第八课时:贪婪模式
- 第九课时:修饰符
- 第十课时:组匹配
- 第五节:字符串的实例方法
- 第一课时:匹配
- 第二课时:搜索
- 第三课时:替换
- 第四课时:分割