首先,有人可能觉得正则学了就忘了,有人觉得学的时候再查,如何更加方便的学习推荐一个小的工具配合文档一起学
1.匹配非数字
var reg=/\D/g;
var a='123';
a.replace(reg, "我"); //"123"
var reg=/\D/g;
var a='123.2';
a.replace(reg, "我"); //"123我2"
var reg=/[^0-9]/g
var a='123.2';
a.replace(reg, "我"); //"123我2"
2.理解reg.exec(str);
匹配成功返回一个数组,匹配失败返回null
这里就说一下匹配成功返回的参数:共四个,分别是:
a[0] | 该正则尽最大可能匹配到的字符串 |
a[1,2...] | 括号中的分组捕获:一个子串在一个位置,有可能有好几个,那就在a[2]、a[3]...依次类推 |
index | 匹配到的字符位于原始字符串的基于0的索引值 |
input | 原始字符串 |
那就来看看几个例子吧:对于第一个正则其中(?:x)这个括号不能当做子串,是未捕获括号哦
先来图展示再测试:
4.var reg=/\brequire\s*\(\s*(["'])(.+?)\1\s*\)/g;
重点理解单词边界是什么?\b:就是匹配\w\W中的前一个
(.+?)这个子表达式中的.是匹配单字符(就是单个字符,比如一个a或一个‘我’),+就是多个当字符,+后面一个?就是将贪婪变成非贪婪哦,匹配尽量少个。
3.正则位置匹配