这个方法可以基于指定的分隔符将一个字符串分割成多个字符串,并将结果放在一个数组中,分隔符可以是字符串,也可以是一个RegExp。该方法可以接受第二个参数(可选)用于指定数组的大小,如果第二个参数为0-array.length范围内的值时按照指定参数输出,其他情况将所有结果都输出
[注意]IE8-对split()中的正则表达式,会忽略捕获组
[tips]如果是split(''),则原来的数组会一个字符字符分割后传出来
var colorText = 'red,blue,green,yellow'; console.log(colorText.split(''));//["r", "e", "d", ",", "b", "l", "u", "e", ",", "g", "r", "e", "e", "n", ",", "y", "e", "l", "l", "o", "w"] console.log(colorText.split(','));//["red", "blue", "green", "yellow"] console.log(colorText.split(',',2));//["red", "blue"] console.log(colorText.split(/\,/));//["red", "blue", "green", "yellow"] console.log(colorText.split(/e/));//["r", "d,blu", ",gr", "", "n,y", "llow"] console.log(colorText.split(/[^\,]+/));//将除去逗号以外的字符串变为分隔符["", ",", ",", ",", ""],IE8-会识别为[",",",",","]
局限性
下列为ECMAScript正则表达式不支持的特性
[1]匹配字符串开始的结尾的\A和\Z锚(但支持以^和$来匹配字符串的开始和结尾)
[2]向后查找(但支持向前查找)
[3]并集和交集类
[4]原子组
[5]Unicode支持(单个字符除外)
[6]命名的捕获组(但支持编号的捕获组)
[7]s(single单行)和x(free-spacing无间隔)匹配模式
[8]条件匹配
[9]正则表达式注释
常见实例
[1]两种方法找出字符串中所有的数字
[a]用传统字符串操作
var str1 = 'j1h342jg24g234j 3g24j1'; var array = []; var temp = ''; for(var i = 0; i < str1.length; i++){ var value = parseInt(str1.charAt(i));//如果用Number()将无法排除空格 if(!isNaN(value)){ temp += str1.charAt(i); }else{ if(temp != ''){ array.push(temp); temp = ''; } } } if(temp != ''){ array.push(temp); temp = ''; } console.log(array);//["1", "342", "24", "234", "3", "24", "1"]
[b]用正则表达式
var str1 = 'j1h342jg24g234j 3g24j1';
array = str1.match(/\d+/g);
console.log(array);//["1", "342", "24", "234", "3", "24", "1"]
[2]敏感词过滤(replace方法的函数匹配)
var string = 'FLG是邪教'; var pattern = /FLG|邪教/g; var result = string.replace(pattern,function($0){ var s = ''; for(var i = 0; i < $0.length; i++){ s+= '*'; } return s; }) console.log(result);//***是**
[3]日期格式化
var array = ['2015.7.28','2015-7-28','2015/7/28','2015.7-28','2015-7.28','2015/7---28']; function formatDate(date){ return date.replace(/(\d+)\D+(\d+)\D+(\d+)/,'$1'+'年'+'$2'+'月'+'$3'+'日') } var result = []; for(var i = 0 ; i < array.length; i++){ result.push(formatDate(array[i])); } console.log(result);//["2015年7月28日", "2015年7月28日", "2015年7月28日", "2015年7月28日", "2015年7月28日", "2015年7月28日"]
[4]获取网页中的文本内容
var str = '<p>refds</p><p>fasdf</p>' var pattern = /<[^<>]+>/g; console.log(str.replace(pattern,''));//refdsfasdf
[5]去除首尾空格的trim()兼容写法
var string = ' my name is littlematch '; console.log(string.replace(/^\s+|\s+$/,''));//my name is littlematch