这篇主要是将正则,学习新东西,我记得老师说过一个好方法,要带着疑问去学习,不能光看理论,你要一直想着这个东西是干嘛的,怎么用,用在哪,我觉得的说的很好.所以在看的时候要一直想着这些问题.
这是本喵的学习笔记可能有很多不足之处,希望大家能多提意见!
开始吧,上课!
什么是正则表达式?
正则:也叫规则,能让计算机读懂人类的规则.
( 注意:正则都是都是操作字符串的)
正则的写法:
var re =/a/; 这里写两个//的话系统会认为这是注释,所以最好写点东西.
var re = new RegExp('a');
正则中默认是区分大小写的,如果不区分大小写的话,在正则的最后加标识i
正则默认:正则匹配成功就会结束,不会继续匹配.如果想全部查找就要加标识 g(全局匹配)
常用方法:
1)
test:正则去匹配字符串,如果匹配成功就返回真,失败返回假.
test的写法:正则.test(字符串 );
eg:
var str = 'abcddef';
var re = /b/;
alert(re.test(str));
这时候就会返回ture,因为需要匹配的b在字符串中;
如果匹配的bc呢?(也会返回ture)
如果匹配的bd呢?(会返回false,因为bd不是一个整体)
转义字符:
\s :空格
\S:非空格
\d:数字
\D;非数字
\w:字符(字母,数字,下划线)
\W:非自字符
2)
search:正则去匹配字符串,如果匹配成功,就返回成功的位置,如果匹配失败就返回-1.
search的写法:字符串.search(正则);
eg:
var str = 'abcdef';
var re = /b/;
alert(str.search(re));
很明显找到了所以返回-1;
如果这样写
var re = /B/
再运行
str.search(re);
返回的是-1,可以看出正则中默认是区分大小写的;
3)
match:正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null;
match的写法:字符串.match(正则);
eg:
var str = 'jdl46d4a6sd464sd4w4a4f6';
var re = / \d /;
alert(str.match(re)); //[4];
只有一个[1]后面还有很多数字并没有添加到数组中,为什么呢?
这里又是正则的默认的行为
正则默认:正则匹配成功就会结束,不会继续匹配.如果想全部查找就要加标识 g(全局匹配)
这样正则就要写成如下形式:
var re = / \d /g;
var str = 'jdl46d4a6sd464sd4w4a4f6';
var re = / \d /g;
alert(str.match(re)); //[4,6,4,6,4,6,4,4,4,4,6];
这里每个又会分开添加到数组中,如果我想连续的数字组成一组,要怎末解决?
一般可能会想到
var re = / \d\d /g;
这样写
那要是数字是几位不确定呢,这样写.....有瑕疵
这时候就要用到量词了(我的天呐,这么神奇吗)
量词:匹配并不确定的位置
+ :至少出现一次
var re = / \d+ /g;这就是说数字至少出现一次
4)
replace: 正则去匹配字符串,匹配成功的字符去替换成新的字符串
replace的写法: 字符串.replace(正则,新的字符串)
eg:
var str = 'aaa';
var a = /a/;
str = str.replace(re,'b');
alert(str);
结果是'baa';
因为程序匹配到第一个a后把第一个a替换成b;如果我想吧所有的a替换成b呢?应该怎么做?
var re = /a/g;
那么所有的a替换成一个b呢?可以自己试一下可以依靠前面的知识实现;
后面我会写一些实际的栗子,虽然大部分是搬运的.因为是学习笔记,后续的话我会做些原创的文章虽然不一定是技术
来源:https://www.cnblogs.com/sunsetshadow/p/5639973.html