一、什么是正则表达式
1.1 概述
先给出一个简单的示例:
- ^ 为匹配输入字符串的开始位置。
- [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。
- abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。
我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度,我们就可以使用以下正则表达式来设定。
以上的正则表达式可以匹配 runoob、runoob1、run-oob、run_oob, 但不匹配 ru,因为它包含的字母太短了,小于 3 个无法匹配。也不匹配 runoob$, 因为它包含特殊字符。
正则表达式都能帮我们做什么?
数据隐藏(188****3456);
数据采集;
数据过滤(论坛,***,你** );
数据验证(手机号,邮箱地址)
1.2 入门
验证一个字符串中是否有数字 8 ;
二、 JS标准库中的正则对象
2.1 创建正则对象
1:字面量写法-以斜杠表示开始和结束; var regex = /xyz/;
2:构造函数生成-通过实例化得到对象; var regex = new RegExp(‘xyz’);
上面两种写法是等价的,都新建了一个内容为xyz的正则表达式对象。
它们的主要区别是,第一种方法在编译时新建正则表达式,第二种方法在运行时新建正则表达式。
2.2 匹配模式
匹配模式也就修饰符:
表示正则匹配的附加规则,放在正则模式的最尾部。
修饰符可以单个使用,也可以多个一起使用。
在正则表达式中,匹配模式常用的有两种形式:
g :global缩写,代表全局匹配,匹配出所有满足条件的结果,不加g第一次匹配成功后,正则对象就停止向下匹配;
i :ignore缩写,代表忽略大小写,匹配时,会自动忽略字符串的大小写
2.3 正则对象的方法
test(str) :判断字符串中是否具有指定模式的子串,返回结果是一个布尔类型的值;
exec(str) :返回字符串中指定模式的子串,一次只能获取一个与之匹配的结果;
2.4 String对象的方法
search(reg) :与indexOf非常类似,返回指定模式的子串在字符串首次出现的位置
match(reg) :以数组的形式返回指定模式的字符串
replace(reg,’替换后的字符’) :把指定模式的子串进行替换操作
split(reg) :以指定模式分割字符串,返回结果为数组
三、几个重要的概念
子表达式
在正则表达式中,通过一对圆括号括起来的内容,我们就称之为“子表达式”。如:
var reg = /\d(\d)\d/gi;
捕获
在正则表达式中,子表达式匹配到相应的内容时,系统会自动捕获这个行为, 然后将子表达式匹配到的内容放入系统的缓存区中。我们把这个过程就称之为“捕获”。
反向引用
在正则表达式中,我们可以使用\n(n>0,正整数,代表系统中的缓冲区编号) 来获取缓冲区中的内容,我们把这个过程就称之为“反向引用”。
这些比较重要的概念,在什么情况下可能被用到? 例:查找连续的相同的四个数字,
如:1111、6666
练习
例1:查找连续的四个数字,如:3569
Var n = /\d\d\d\d/;
例2:查找数字,如:1221,3443
/(\d)(\d)\2\1/
例3:查找字符,如:AABB,TTMM
(提示:在正则表达式中,通过[A-Z]匹配A-Z中的任一字符)
/([A-Z])\1([A-Z])\2/
例4:查找连续相同的四个数字或四个字符
(提示:在正则表达式中,通过[0-9a-z])
/([0-9a-z])\1\1\1/
四、编写正则表达式
4.1 正则表达式组成
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则表达式三步走 1 查什么 ,2 查多少 ,3 从哪查;
4.2 查什么(匹配符)
[a-Z]是不对的;
4.3 查多少(限定符)
在查多少的情况下出现:
4.4 从哪查(定位符)
4.5 转义字符
4.6 或者的用法
4.7附表达式全集加常用表达式
我是小咖
发个邀请:
如果你正好想学习php,可以与我一起交流,我的VX:feilueze333。下面资料免费赠送