一、 认识正则
1、 什么是正则
正则就是一个事物的规则。什么是正则表达式,就是描述事物规则的式子。
2、 正则能帮我们干什么?
1)做表单验证
2)制作QQ表情
3)制作小偷程序
正则就是做字符串的查找、匹配、分割、替换。是字符串方法的升级版。
3 、正则难学吗?
这是一个邮箱的正则表达式 \w+@\w+(.com|.cn|.org|.net){1,3}
对不懂正则规则的人,正则就是一堆乱七八糟的字符串就,正则像医生的字,道士的符,就是天书。只要学习这个规则,其实正则对我们来说就非常简单了。正则非常好学。
4 如何学习正则
学好正则只需要学两个东西
1) 正则表达式:就是描述事物规则的式子
2) 正则函数:没有正则函数,正则表达式就是一堆乱七八糟的字符串,正则表达式要起作用,必须和正则函数一起使用。
二 、正则的基本语法
1 声明一个正则对象
①用正则构造函数
var patt = new RegExp(‘正则表达式’,’修饰符’);
②使用正则字面量的方式
var patt = /正则表达式(描述事物规则的字符串)/修饰符;
2 正则表达式
正则表达式分四块内容,只要学好这四块,你就可描述任务事物的规则了。
如我们可以定义一个电话号码的规则表达式,这样就可以检查一个字符串是否是电话号码了。
① 定界符 ,正则中的定界符就是定义正则表达式边界的。符号是 / /,作用就是告诉程序,定界符内的是正则表达式,要按照正则的语法规则进行解析。
② 原子,自然界中的原子就是组成物质的最小单位。正则中的原子是组成正则表达式的最小单位。原子分三种
(1) 普通原子
(2) 转义符号、特殊符号,常见的转义符号有\n 换行 \r回车 \t 水平制表符 /输出定界符 \”输出双引号。。。。。。
(3) 通配符
\d 表示任意一位数字0-9 \D任意一位非数字 非0-9
\w 表示任意一位数字、字母下划线 \W任意一位非数字字母下划线
\s 表示任意一位空白字符 如空格 \S任意一位非空白字符
\b 表示一个单词的边界 空格 \B表示非单词边界 非空格
③ 元字符
元字符是修饰原子的,不能单独单独存在
(1)[] 从多个原子中选一个
(2) ^ 如果是出现在[]中,表示取反的意思,一定不能有
(3) ^ 如果出现在正则表达式开头,表示以xxx开头的意思
(4) $ 如果出现在正则表达式结尾,表示以xxx结尾的意思
/^ a $/ 字符串要匹配此表达式,必须满足三个条件
1 字符串以a开头
2 字符串以a结尾
3 字符串只能含一个a
/^ a+$/ 字符串要匹配此表达式,必须满足三个条件
1 字符串以a开头
2 字符串以a结尾
3 字符串可以含一个或多个a
(5)+ 表示匹配前面的原子一次或多次,大于0次
(6)? 表示匹配前面的原子0次或1次
(7)* 表示匹配前面的原子0次1次或多次,任意次
(8){m} 匹配前面的原子m次
(9){m,} 前面的原子最少出现m次
(10){m,n} 前面的原子最少出现m次,最多出现n次
(11) | 从多分支中选一个 abc|opq|xyz
(12) . 表示除了换行符以外的任意符号
(13) .* 匹配任意字符(除换行符)任意多次,这种匹配是贪婪匹配,如果有好几部分满足,取最长符合要求的子串
(14) .*? 不贪婪的匹配任意符号任意多次
(15) ()叫做模式单元
他的几个作用
1 把()中的内容作为整体处理 ab|c a(b|c)
2 ()中的内容会在内存中单独存放一份,方便使用
3通过正则的匹配函数,返回一个数组,数组中下标为0的元素中放的是满足正则规则的子串,下标为1的元素中放的是,第一个()中匹配的内容, 下标为1的元素中放的是,第一个()中匹配的内容,依次类推。
4如果不想匹配括号中的内容 使用(?:) 三元运算符
④ 修饰符
i 忽略大小写
m 把字符串作为多行对待
g 全局匹配
3 正则函数
分两大类,一类是字符串的正则方法,一类是正则对象的方法
一 字符串的正则方法
string.match()
string.search()
string.replace()
string.split()
二 正则对象的方法
patt.test()
patt.exec()
patt.complie()
网友评论