字符串处理神器之正则表达式详解【文末赠送常用正则表达】

一、什么是正则表达式

1.1 概述  

先给出一个简单的示例:

字符串处理神器之正则表达式详解【文末赠送常用正则表达】

  • ^ 为匹配输入字符串的开始位置。
  • [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。
  • abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。

我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度,我们就可以使用以下正则表达式来设定。

字符串处理神器之正则表达式详解【文末赠送常用正则表达】

以上的正则表达式可以匹配 runoobrunoob1run-oobrun_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,正整数,代表系统中的缓冲区编号) 来获取缓冲区中的内容,我们把这个过程就称之为反向引用

 

这些比较重要的概念,在什么情况下可能被用到? :查找连续的相同的四个数字,

:11116666

 

字符串处理神器之正则表达式详解【文末赠送常用正则表达】

 

练习

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。下面资料免费赠送

字符串处理神器之正则表达式详解【文末赠送常用正则表达】