一、简介
1.1 正则表达式的web常见场合
邮箱验证
用户名验证
替换字符串某一部分
信息采集 用来分析有效的代码段
1.2 字符串应用正则
string.match(reg)
正则查找字符串
string.search(reg)
正则查找位置
string.replace(reg,'newstr')
正则替换
string.split(reg)
正则拆分
1.3 正则表达式3句话
1.3.1 要找什么字符?(5种方法)
字面值 比如:
hi
就是找
hi
字符的集合
[abcd]
匹配
abdc
任意一个
用范围来表示字符
[0-9] [a-z][A-Z]
字符簇 就是系统为常用的字符集合创建的一个简写
例如:
\d
表示
[0-9]
\w
代表
[0-9a-zA-Z_]
\s
代表
[\t\v\f\r\n]
(空白符)
补集的形式来表示字符集合
例如:
[0-9]
补集
[^0-9]
对于字符簇只需把字母大写即可表示补集
\d
\D
(非数字)
\w
\W
(代表
a-z0-9A-Z
之外的东西)
\s
\S
(代表非空白字符)
点代表 任意字符 (不包括换行符)
1.3.2 从哪里找,找到哪?
\b
单词边界
\bhi
从单词边界开始匹配
hi
\B
单词的非边界 把单词的中间某一部分取出来 把中间含有hi的单词取出来 即
hi
不能再两端
^
从字符串的起始位置开始匹配
$
匹配到字符串的额结束位置
1.3.3 找多少
*
表示匹配
0-
无穷
==
等价
(0,)
+
表示匹配
1-
无穷
==
等价
(1,)
?
表示
[0,1] ==
等价
(0,1)
a(n)
: 字符a准确出
现n
次
a(n,)
:字符
a
至少出现
n
次
a(n,m):n
到
m
次
1.4 贪婪模式
个数修饰符默认是贪婪模式 尽量多找
是指在上面的个数修饰符后面加
?
,则为非贪婪模式,尽量少的找
模式:
以匹配为例默认情况 match找到一次就结束 能否告诉匹配过程 一直找 在全文范围内一直找
g
表示全局模式 global 找所有的 而不是就找一行就结束
i
ignore 忽略大小写
s
单行模式(把整篇文章看成一行)js不支持单行模式
m
多行模式
二、语法
2.1 基本元字符
.
: 匹配除了换行符之外的任何单个字符
\
: 在非特殊字符之前的反斜杠表示下一个字符是特殊的
|
: 逻辑或操作符
[]
:定义一个字符集合,匹配字符集合中的一个字符,在字符集合里面像
.
,\这些字符都表示其本身
[^]
:对上面一个集合取非
-
:定义一个区间,例如
[A-Z]
,其首尾字符在
ASCII
字符集里面
2.2 数量元字符
:匹配前面一个字符至少
m
次至多
n
次重复,还有
表示匹配
m
次,
表示至少
m
次
+
: 匹配前面一个表达式一次或者多次,相当于
,记忆方式追加
(+)
,起码得有一次
*
: 匹配前面一个表达式零次或者多次,相当于
,记忆方式乘法
(*)
,可以一次都没有
?
: 单独使用匹配前面一个表达式零次或者一次,相当于
2.3 位置元字符
^
: 单独使用匹配表达式的开始
\$
: 匹配表达式的结束
\b
:匹配单词边界
\B
:匹配非单词边界
(?=p)
:匹配
p
前面的位置
(?!p)
:匹配不是
p
前面的位置
2.4 特殊元字符
\d
:
[0-9]
,表示一位数字,记忆方式 digit
\D
:
[^0-9]
,表示一位非数字
\s
:
[\t\v\n\r\f]
,表示空白符,包括空格,水平制表符(\t),垂直制表符(\v),换行符(\n),回车符(\r),换页符(\f),记忆方式 space character
\S
:
[^\t\v\n\r\f]
,表示非空白符
\w
:
[0-9a-zA-Z]
,表示数字大小写字母和下划线,记忆方式 word
\W
:
[^0-9a-zA-Z]
,表示非单词字符
2.5 标志字符
g
: 全局搜索 记忆方式global
i
:不区分大小写 记忆方式 ignore
m
:多行搜索
三、match,test,exec,search的返回值
3.1 match的用法
在不加全局“g”的情况下
var str="wo shi zhong guo ren";console.log(str.match(/o/));// 返回的结果是:["o", index: 1, input: "wo shi zhong guo ren"];
在加全局“g”的情况下
var str="wo shi zhong guo ren";console.log(str.match(/o/g)); 返回的结果是:["o", "o", "o"];
3.2 exec的用法
var str="wo shi zhong guo ren";var re=/o/;console.log(re.exec(str));// 返回的结果是:["o", index: 1, input: "wo shi zhong guo ren"];// exec返回的和match不加全局“g”’一样
3.3 test的用法
var str="wo shi zhong guo ren";var re=/o/;console.log(re.test(str));// 返回的结果是:true(如果找不到返回的则是false)
3.4 search的用法
关于search用法其实很简单,它和indexOf是一样的,就是找到index,而且是从前往后数的。
var str="wo shi zhong guo ren";var re=/o/;console.log(str.search(re)); 返回的结果是:1;
四、应用
4.1 例1
在线演示 https://codepen.io/poetries/pen/xWMRxR
正则-例子1
4.2 例2-要找什么字符串
在线演示 https://codepen.io/poetries/pen/oqmYNw
要找什么字符
4.3 例3-从哪里开始匹配
在线演示 https://codepen.io/poetries/pen/jzdVOo
74-从哪里开始匹配
4.4 例4 正则应用字符串
在线演示 https://codepen.io/poetries/pen/dmaOPz
正则应用字符串
4.5 例5-预查
在线演示 https://codepen.io/poetries/pen/MVLbwW
预查
4.6 例6-反向引用
在线演示 https://codepen.io/poetries/pen/LdqbVL
反向引用
4.7 例7-正则练习
在线演示 https://codepen.io/poetries/pen/dmaOYV
正则练习
4.8 例8-常用正则
在线演示 https://codepen.io/poetries/pen/GxzNoG
常用正则解答
五、总结
领取专属 10元无门槛券
私享最新 技术干货