正则表达式学习(二)
2018-11-06 本文已影响0人
欢喜的看着书
接着上期的正则学习(一)https://www.jianshu.com/p/0b0fda627adc, 我接着写 正则学习(二)
三 几个重要的概念
1 、子表达式
- 在正则表达式中,通过一对圆括号括起来的内容,我们就称之为“子表达式”。如:var reg = /\d(\d)\d/gi;
2 、捕获
- 在正则表达式中,子表达式匹配到相应的内容时,系统会自动捕获这个行为,然后将子表达式匹配到的内容放入系统的缓存区中。我们把这个过程称之为“捕获”
3、 反向引用
- 在正则表达式中,我们可以使用 \n( n>0, 正整数,代表系统的缓冲区编号)来获取缓冲区的内容,我们把这个过程就称之为“反向引用”。
4、几个重要概念的应用场景
- 例:查找连续相同的四个数字,其格式是 ABAB形式 例如,如:1212、9696、3535
var str = "asdasdas3232asdqwdq5858vfdcasd6767asdas8585dasx";
var reg = /(\d)/(\d)\1\2/gi;
console.log(str.match(reg));
//输出结果: ["3232", "5858", "6767", "8585"]
5、几个练习题
- 1、查找连续的四个数字,如 3569
//答:
var reg = /\d\d\d/gi;
- 2、查找数字,如 1221, 3443
//答:
var reg = /(\d)(\d)\2\1/gi;
- 3、查找字符,如 AABB,TTMM
(提示:在正则表达式中,通过[A-Z]匹配A-Z中的任一字符)
//答:
var reg = /([A-Z])\1([A-Z])\2/g;
//注意 这个表达式没有i i的意思是忽略大小写
- 4、查找连续相同的四个数字或者四个字符
(提示:在正则表达式中,通过[0-9a-z])
//答:
var reg = /([0-9a-z])\1\1\1\/gi;
四、编写正则表达式
1、正则表达式的组成
- 正则表达式是由普通字符以及特殊字符组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
var reg = /\d/gi
2、编写正则表达式三步走
- 1 查什么
- 2 查多少
- 3 从哪儿查
3、查什么(匹配符)
匹配符:字符串匹配符用于匹配某个或某些字符
在正则表达式中,通过一对中括号括起来的内容,我们就称之为“字符簇”。字符簇代表的是一个范围,但是匹配时,只能匹配某个固定的结果
[a-z] : 匹配字符a到字符z之间的任一字符
[A-Z] : 匹配字符A到字符Z之间的任一字符
[0-9] : 匹配数组0到数字9之前的任一数字
[0-9a-z] : 匹配数字0到数字9或字符a到字符z之间的任一字符
[0-9a-zA-Z] : 匹配数字0到数字9或字符a到字符z或字符A到字符Z之间的任一字符
[abcd] : 匹配字符a或字符b或字符c或字符d
[1234] : 匹配数字1 或 数字2 或 数字3 或 数字4
[^a-z] : 匹配除字符a到字符z以外的任一字符
[^0-9] : 匹配除数字0到数字9以外的任一字符
[^abcd] : 匹配除a、b、c、d以外的任一字符
\d :匹配一个数字字符,还可以使用[0-9]
\D :匹配一个非数字字符,还可以使用[^0-9]
\w :匹配包括下划线的任何单词字符,还可以使用[0-9a-zA-Z_]
\W :匹配任何非单词字符,还可以使用[^\w]
\s :匹配任何空白字符,space缩写
\S :匹配任何非空白字符,还可以使用[^\s]
.(我是一个点号) :匹配除 "\n" 之外的任何单个字符
[\u4e00-\u9fa5] :匹配中文字符中的任一字符
//todo 先写到这里 余下慢慢写