支持正则表达式的strgin对象的方法
2.1、search()
该方法是最简单的方法了,它以正则表达式为参数,返回第一个与之匹配的子串的开始字符的位置,如果没有任何匹配的话,返回-1。匹配返回1
如果search的参数不是正则的话,它会首先被转成正则。其次,search是不支持全局检索的,所以大家就不要白费力气用它搜全局了--即使用g无效
'abc'.search(/b/i);
2.2 replace()
该方法执行检索与替换操作。第一个参数还是正则表达式,第二个参数是要替换的字符串或者操作函数。当第二个参数是处理函数时,处理函数对应参数分别为当前匹配的子符串、捕获分组、下标、字符串副本
'abc'.replace(/b/gi, '2'); // 'a2c'
'abc'.replace(/(b)/gi, '$1,'); // ‘ab,c’
var str = 'abc12345';
str.replace(/a(b)c1(\d)3/g, function (val, $1, $2, idx, s) {
console.log(val, $1, $2, idx, s); // abc123 b 2 0 abc12345
});
match()
这个方法可以说是String中比较常用的方法,它唯一的参数就是正则表达式,返回的是包含匹配结果的数组。该方法支持全局匹配。
'1a 2b 3c'.match(/(\d)[A-Z]+/gi);
'1a 2b 3c'.match(/(\d)[A-Z]+/i);
var arr = '1a 2b 3c'.match(/(\d)[A-Z]+/i);
console.log(arr, arr.index, arr.input);
// ["1a", "1", index: 0, input: "1a 2b 3c"], 0, '1a 2b 3c'
如果有g标识,返回就是包含所有匹配的数组,这时捕获分组是无效的;反之,没有g标识时,返回还是一个数组,数组[0]是完整匹配,数组[n]是$n的捕获(前提是你有捕获分组)。当没有g标识时,返回的匹配数组还会有2个额外属性—index和input,index不用多说了匹配位置,input就是目标字符串的副本
split()
该方法有2个参数,第二个参数是限制数组的长度,如果指定了,超过这个长度的元素就不会再放进数组里了。
'a,b/c'.split(/[,/]/); // ['a', 'b', 'c']
'a,b/c'.split(/[,/]/, 1); // ['a']