一.正则表达式简介

什么是正则表达式

正则表达式,也叫规则表达式, 是对字符串操作的一种逻辑公式。

为什么要使用正则?

1、使用极简单的方式,去匹配字符串

2、速度快,代码少

3、在复杂的字符串中快速精准的匹配想要的字符

正则表达式创建:

字面量: var reg = / 规则/修饰符;

实例化: var reg = new RegExp( 规则 ,修饰符 );

基本语法

1.修饰符

i 忽略大小写
g 全局匹配
m 多行匹配

2.元字符

\d 匹配数字
\D 匹配非数字
\w 匹配数字字母下划线
\W 匹配非数字字母下划线
\s 匹配空字符
\S 匹配非空字符
\b 匹配单词边界
\B 匹配非单词边界
[\u4e00-\u9fa5] 有事100,有酒发我 匹配中文

3.特殊字符

** 转义字符,将在正则中有特殊含义的字符转为普通字符
[] 中括号中的字符匹配任意一个
^ 以什么开始
$ 以什么结束
[^] 取反,除了中括号里以外的字符
. 除了换行以外的任意字符
|
() 分组

4.限定符

{n,m} 匹配n-m个
{n} 匹配n个
{n,} 最少匹配n个
+ 一个或多个,相当于{1,}
** *** 0个或多个,相当于{0,}
? 0个或一个,相当于{0,1}

#二.常见正则

**1. ** 手机号正则

以数字1开头

第二位不能是[012]

后9位任意数字

img

**2. ** 邮箱正则

开头可以多个是数字字母下划线

中间有@符

@符后也是多个数字字母下划线

接着匹配 .

后面跟常见尾缀**(com | cn | net)**

img

**3.QQ ** 正则

不能以0开头

长度为5-11位

img

**4. ** 网址正则

http开头,s可有可无,后面是://

@前是数字字母下划线

@后.前是数字字母下划线

.后是尾缀

img

**5. ** 匹配前后空格

只匹配开头或结尾,不管中间

img

#三.课堂小案例

1.敏感词替换( **replace(reg, ** ’’) )

2.找数字加2( replace(reg,function($0){}) )

3.转小驼峰( replace(reg,function($0,$1){}) )

4.字符串 match() 方法

语法: 字符串.match(正则)

返回值: 数组

**match()**方法返回匹配项组成的数组(支持全局匹配)

img

5.正则exec()方法

语法: 正则.exec(字符串)

返回值: 数组

**exec()**方法返回匹配项组成的数组(不支持全局匹配)

不加g永远只能找到第一个

加g该方法调用一次匹配第一个,再调用一次匹配第二个,以此类推,找不到返回null

6.字符串的split()方法

split方法支持使用正则当做分隔符

img

#四.课堂小结

1.修饰符: **i ** 忽略大小写 g全局匹配

2.元字符: **\d ** 数字 \w数字字母下划线 \s空字符 \b单词边界

3.特殊字符: **\ ** 转义 |或 []任意一个 [^]除了 ^开头 $结尾 .任意 ()分组

4.限定符: **+ 1 ** 或多 * 0或多 ? 0或1 {}

5.正则方法: test() 返回布尔值 exec() 返回数组,不支持全局匹配

6.字符串方法: replace() 替换 macth()返回数组,支持全局匹配

#五.作业 -- 表单验证

效果图:

功能思路分析:

1. 用户名验证

\1. 给用户名文本框绑定失去焦点事件(blur)

\2. 编写手机号正则和邮箱正则

\3. 验证文本框的内容是否符合手机号正则或邮箱正则

\4. 验证通过返回true,并且隐藏错误提示

5. 验证失败返回false,并且显示错误提示

2. 密码验证

\1. 给密码文本框绑定失去焦点事件(blur)

\2. 编写非纯数字和非纯字母正则

\3. 验证文本框的内容是否符合非纯数字并且和纯字母正则,并且长度3-6

\4. 验证通过返回true,并且隐藏错误提示

5. 验证失败返回false,并且显示错误提示

3. 验证码验证

\1. 给验证码文本框绑定失去焦点事件(blur)

\2. 判断文本框里的内容是否与验证码盒子中的内容一致

\3. 验证通过返回true,并且隐藏错误提示

\4. 验证失败返回false,并且显示错误提示

4. 切换验证码

\1. 封装一个获取随机验证码的方法

\2. 给换一换按钮绑定点击事件(click),调用随机验证码方法

5. 登录验证

\1. 给登录按钮绑定点击事件

\2. 调用用户名、密码和验证码的失去焦点事件,当他们返回值都为真是,跳转页面(location.href),并将用户信息传递过去

js下 Day15、正则表达式的更多相关文章

  1. Java/Js下使用正则表达式匹配嵌套Html标签

    转自:http://www.jb51.net/article/24422.htm 以前写过一篇文章讲解如何使用正则表达式完美解决Html嵌套标签的匹配问题(使用正则表达式匹配嵌套Html标签),但是里 ...

  2. ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证

    ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...

  3. 原生JS下拉加载插件分享。

    无聊写了一个JS下拉加载插件,有需要的可以下载. // 使用 // new ManDownLoad("#ul","json/load.json",functio ...

  4. js下拉框

    Js下拉框   http://sc.chinaz.com/tag_jiaoben/XiaLaKuang.html

  5. CSS+JS下拉菜单和纯CSS下拉菜单

    下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...

  6. 小议 js 下字符串比较大小

    原文:小议 js 下字符串比较大小 之前群里有人问如何比较两个时间大小,他的时间格式是 2014-08-08 而不是 2014-8-8.所以我给的方法是 直接比较,如: var a = "2 ...

  7. node.js 下依赖Express 实现post 4种方式提交参数

    上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ...

  8. js如何使用正则表达式实现过滤HTML标签?(/<[^<>]+>/g)

    js如何使用正则表达式实现过滤HTML标签?(/<[^<>]+>/g) 一.总结 js进阶正则表达式实现过滤HTML标签(<>标签中不能包含标签实现过滤HTML标签 ...

  9. npm 是node.js下带的一个包管理工具

    npm 是node.js下带的一个包管理工具          npm install -g webpack webpack是一个打包工具 gulp是一个基于流的构建工具,相对其他构件工具来说,更简洁 ...

随机推荐

  1. Ubuntu16.04安装搜狗输入法报错:dkpg:处理归档sogoupinyin.deb(--install)时出错,安装sogoupinyin将破坏fcitx-ui-qimpanel

    系统:ubuntu16.04 事件:安装搜狗拼音时报错 报错信息(ubuntu语言是英文的报错信息): dpkg: regarding sogoupinyin_2.3.2.07_amd64-831.d ...

  2. 如何用ABBYY解决文档图像存在缺陷,OCR 准确性低的问题

    扭曲的文本行.歪斜.噪声及扫描图像和数码照片中常见的其他缺陷可能会降低识别质量.ABBYY FineReader,提供各种 自动和手动工具去除这些缺陷. 如何手动编辑图像 如果您禁用了自动预处理功能或 ...

  3. yum安装软件时报错libmysqlclient.so.18()(64bit)

    错误信息 yum -y install sysbench 安装sysbench提示缺少依赖包如下图: 主要原因 缺少Percona-XtraDB-Cluster-shared-55-5.5.37-25 ...

  4. python+selenium通过加载用户配置实现免登陆

    1查看profile路径 在Chrome地址栏访问chrome://version,可以查看个人资料存储位置: 2 python代码如下: from selenium import webdriver ...

  5. Java基础教程——线程池

    启动新线程,需要和操作系统进行交互,成本比较高. 使用线程池可以提高性能-- 线程池会提前创建大量的空闲线程,随时待命执行线程任务.在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务.(这 ...

  6. Vue+EasyPOI导出Excel(带图片)

    一.前言 平时的工作中,Excel 导入导出功能是非常常见的功能,无论是前端 Vue (js-xlsx) 还是 后端 Java (POI),如果让大家手动编码实现的话,恐怕就很麻烦了,尤其是一些定制化 ...

  7. Java MQTT 客户端之 Paho

    Paho 自动重连后订阅的主题会清空,所以需要实现 MqttCallbackExtended 接口,在 connectComplete 方法添加订阅主题:而不是实现 MqttCallback 接口 一 ...

  8. 5.1 Spring5源码--Spring AOP源码分析一

    目标: 1.什么是AOP, 什么是AspectJ, 2. 什么是Spring AOP 3. Spring AOP注解版实现原理 4. Spring AOP切面原理解析 一. 认识AOP 1.1 什么是 ...

  9. 区块链学习7:超级账本项目Hyperledger与Fabric以及二者的关系

    ☞ ░ 前往老猿Python博文目录 ░ 一.超级账本(hyperledger) 超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,成员包括 ...

  10. PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QTextEdit是一个高级的所见即所得的文档查看器和编辑器 ...