JavaScript的正则表达式(一)

xiaoxiao2021-02-28  90

字符串的复习

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不加的时候才可以获取到子项的集合)

转载请注明原文地址: https://www.6miu.com/read-79002.html

最新回复(0)