字符串的复习
indexOf 查找
substring 获取子字符串
charAt 获取某一个字符
split 拆分数组
正则:也就是规则 让计算机读懂人类的规则
正则是针对字符串的
正则写法
var re = /a/
var re = new RegExp('a');
test:正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假
test的写法:正则.test(字符串)
转义字符:alert(a\nb) //a和b换行
n \n 换行
r \r 制表
t \t 回车
\s :空格
\S :非空格
\d :数字
\D :非数字
\w :字符(字母、数字、下划线_)
\W :非字符
search:正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1
search的写法:字符串.search(正则)
正则中的默认:是区分大小写的
如果不区分大小写,在正则的最后加标识 i
var str = '123s25d3f53';
var re = /S/i; var re = new RegExp('B',i);
alert(str.search(re));
match:正则去匹配字符串,如果匹配成功就返回匹配成功的数组,如果匹配不成功,就返回null
match的写法:字符串.match(正则);
正则默认:正则匹配成功就会结束,不会继续匹配
如果想全部查找,就要加标识g(全局匹配)
量词:匹配不确定的位置
+:至少出现一次
var str = "1s2f1114ss25frwe"; //var re = /\d/ //[1]; //var re = /\d/g //[1,2,1,1,1,4,2,5]; //var re = /\d\d/g //[11,14,25]; //var re = /\d\d\d/g //[111]; //var re = /\d+/g; //[1,2,1114,25] alert(str.match(re));replace: 正则去匹配字符串,匹配成功的字符去替换新的字符串
replace的写法:字符串.replace(正则,新的字符串)
var str = "c2sdcc"; //var re = /c/; //d2sdcc //var re = /c/g //d2sddd //var re = /c+/g //d2sdd alert(str.replace(re,"d")); 正则中 | :或的意思
replace:可以是字符串,也还可以是一个回调函数
下面的案例就是过滤敏感词
var oBtn = document.getElementById('btn'); var aText = document.getElementsByTagName('textarea'); oBtn.onclick = function(){ var re = /明白|厉害|智商/g; aText[1].value = aText[0].value.replace(re,function(str){ //回调函数中 第一个参数代表母亲,第二个参数代表第一个孩子,第三个参数代表第二个孩子,以此类推var str = 'abc' var re = /(a)(b)(c)/ alert(str.match(re)); //abc,a,b,c (当match不加的时候才可以获取到子项的集合) var str = 'abc' var re = /(a)(b)(c)/ alert(str.match(re)); //abc,a,b,c (当match不加的时候才可以获取到子项的集合) var str2 = ""; console.log(str);for(var i=0;i<str.length;i++){str2 += '*';}return str2;})} 匹配子项:小括号()(还有另外一个意思,分组操作)
把正则的整体叫做(母亲)
然后把左边第一个小括号里面的正则,叫做这个第一个子项
第二个小括号就是这个正则的第二个孩子
var str = "2017-07-11"; //情况一 // var re = /\d+-/g // str.replace(re,function(a){ // alert(a); //2017- 07- // }) //情况二 // var re = /\d-+/g // str.replace(re,function(a){ // alert(a); //7- 7- // }) //情况三 // var re = /(\d-)+/g; // str.replace(re,function(a){ // alert(a); //7- 7- // }) //情况四 // var re = /(\d+)(-)/g; // str.replace(re,function(a){ // alert(a); //2017- 07- // })
var str = 'abc' var re = /(a)(b)(c)/ alert(str.match(re)); //abc,a,b,c (当match不加的时候才可以获取到子项的集合)