day19(正则表达式)

正则及表单验证

回顾:

复习字符的操作:

search 查找 返回下标

subsring 方法用于提取字符串中介于两个指定下标之间的字符。开始和结束 ,不包括结束位置

charAt 获取某个字符串 输入下标

split 分割字符串,获得数组

replace 替换

如:从杂乱的字符串中找数字
var str = "asd68asd687as6da78sd123123zcacas";
使用正则的方式
var arr = str.match(/\d+/g);
就可以完成功能

一、正则的概念

1、 正则诞生的目的是什么?

​ 就是为了做表单验证

在JS未出现以前,表单的信息验证需要传输给后台,让后台做数据验证处理之后,再返回给前端页面处理的结果。在带宽有限的情况下,整个验证过程非常复杂,且耗时。

在使用JS做验证的过程中,一个简单的验证规则的实现非常的麻烦。

2、什么正则?

正则表达式(regular expression)是一个描述字符规则的对象。可以用来检查一个字符串是否含有某个字符,将匹配的字符做替换或者从某个字符串中取出某个条件的子串等

正则表达式:

正则表达式其实就是一种规则,其实把正则称作规则表达式更为恰当。正则的语法基于一种古老的perl语言

3、为什么要使用正则?

前端往往有大量的表单数据校验工作,采用正则表达式会使得数据校验的工作量大大减轻。常用效果:邮箱,手机号,身份证号等

二、正则的创建

正则的创建方式:
1.构造函数方式
var reg1 = new RegExp("a");
var str = "adassdfsd";
console.log(str.match(reg1))        //输出匹配a的字符


2.字面量方式,古老的perl语言风格
var reg2 = /a/;
console.log(str2.match(reg2));      //输出匹配a的字符

/ / 是正则表达式的标识符

" " 是字符串的标识符
[ ] 是数组的标识符
{ } 是对象的标识符


正则中的修饰符,写在正则表达式后面/的后面:
g表示全局匹配,查找所有
i表示忽略大小写

先看各种方法有什么不同?

字符串方法

match 获取匹配的项目 返回数组 匹配正则

search 字符串搜索

replace 替换

正则方法:

test 方法用于检测一个字符串是否匹配某个模式. 返回true和false

exec()找到了返回数组,找不到反回null

三、正则与字符串配合

search 字符串搜索

返回出现的位置、忽略大小写 i

例子:判断浏览器的类型


match 获取匹配的项目  返回数组

量词: +

量词变化: \d 、\d\d 和\d+

例子:找出所有的数字



replace 替换所有匹配  返回替换后的字符串

例子:敏感词过滤


正则方式 test() 方法用于检测一个字符串是否匹配某个模式. 返回true和false

比如检测str中有没有box;

var str = "This is a Box!";
var res = /box/;
console.log(res.test(str));

修饰符:

i 忽略大小写

g 全局匹配

四、字符类

任意字符
[abc]  例子:o[usb]t ==> obt 、ost、 obt

范围
[a-z]、[0-9]  例子: id[0-9]  id0 、 id1...

|     或,类似于js中的 ||
var reg = /abc|bbc|cbc|dbc/g
console.log(str.match(reg));   //打印字符串中的abc,bbc,cbc,dbc
var reg = /[a-c]bc/g


排除
[^a] 表示排除a
例子:[^0-9]


组合
[a-z0-9A-Z]           

五、表达式:

[abc] 查找方括号之间的任何字符。

[0-9] 查找任何从 0 至 9 的数字。

[a-z] 查找任何从小写 a 到小写 z 的字符。

[A-Z] 查找任何从大写 A 到大写 Z 的字符。

[A-z] 查找任何从大写 A 到小写 z 的字符。

六、元字符

转义字符:
\d    ——    [0-9]         数字
\w    ——    [a-z0-9_]     数字,字母,下划线
\s    ——    空白字符   
\b	  --    匹配单词边界

\D    ——    [^0-9]        非数字
\W    ——    [^a-z0-9_]    非数字,字母,下划线
\S    ——    非空白字符


. 表示任意字符

七、量词

也叫限定符,可以指定正则表达式的一个给定组,必须要出现多少次才能满足匹配

通过量词可以设置一个内容出现的次数。注意点:量词只对它前边的一个内容起作用。 都是必须连续出现

{n}:匹配前一个字符正好出现n次

{n,}:匹配前一个字符出现n次以上,没有限制

{n,m}:匹配一个字符出现n到m次

*表示允许的次数是0 至 正无穷次,有没有都行

+表示允许的次数是1 至 正无穷次,至少有一个

? 表示允许的次数是0至1,最多出现1次

()表示一组


^开始 $结束


八、练习

1、qq号验证规则:
var reg = /[1-9]\d{4,10}/

2、复杂邮箱的规则:英文数字下划线@一串英文或数子.一串英文
var reg = /\w+@[a-z0-9]+\.[a-z]+/i
想要校验怎么办?在正则转义字符前加上\


3、删除多余空格  
str.replace(/\s+/g,'');

删除首尾空格
str.replace(/^\s+/,'');
str.replace(/\s+$/,'');

4、检查邮政编码  共 6 位数字,第一位不能为 0
/^[1-9]\d{5}$/

作业:

只能用数字开头,长度在6–18位之间 /^\d.{5,17}$/

以字母开头,数字结尾,中间任意一个字符 /1.\d$/i

密码不能少于6位的字符 /^.{6,}$/

以010开头的座机号(后面是8位数字) /^010\d{8}$/

手机号以13开头,以8结尾 /^13\d{8}8$/

九、常用正则表达式

正则表达式


  1. a-z ↩︎

上一篇:centos7.3.1611安装及初始配置


下一篇:学习Java之day19