js下 Day15、正则表达式
一.正则表达式简介
什么是正则表达式
正则表达式,也叫规则表达式, 是对字符串操作的一种逻辑公式。
为什么要使用正则?
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位任意数字
**2. ** 邮箱正则
开头可以多个是数字字母下划线
中间有@符
@符后也是多个数字字母下划线
接着匹配 .
后面跟常见尾缀**(com | cn | net)**
**3.QQ ** 正则
不能以0开头
长度为5-11位
**4. ** 网址正则
http开头,s可有可无,后面是://
@前是数字字母下划线
@后.前是数字字母下划线
.后是尾缀
**5. ** 匹配前后空格
只匹配开头或结尾,不管中间
#三.课堂小案例
1.敏感词替换( **replace(reg, ** ’’) )

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

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

4.字符串 match() 方法
语法: 字符串.match(正则)
返回值: 数组
**match()**方法返回匹配项组成的数组(支持全局匹配)
5.正则exec()方法
语法: 正则.exec(字符串)
返回值: 数组
**exec()**方法返回匹配项组成的数组(不支持全局匹配)
不加g永远只能找到第一个
加g该方法调用一次匹配第一个,再调用一次匹配第二个,以此类推,找不到返回null

6.字符串的split()方法
split方法支持使用正则当做分隔符
#四.课堂小结
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、正则表达式的更多相关文章
- Java/Js下使用正则表达式匹配嵌套Html标签
转自:http://www.jb51.net/article/24422.htm 以前写过一篇文章讲解如何使用正则表达式完美解决Html嵌套标签的匹配问题(使用正则表达式匹配嵌套Html标签),但是里 ...
- ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证
ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...
- 原生JS下拉加载插件分享。
无聊写了一个JS下拉加载插件,有需要的可以下载. // 使用 // new ManDownLoad("#ul","json/load.json",functio ...
- js下拉框
Js下拉框 http://sc.chinaz.com/tag_jiaoben/XiaLaKuang.html
- CSS+JS下拉菜单和纯CSS下拉菜单
下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...
- 小议 js 下字符串比较大小
原文:小议 js 下字符串比较大小 之前群里有人问如何比较两个时间大小,他的时间格式是 2014-08-08 而不是 2014-8-8.所以我给的方法是 直接比较,如: var a = "2 ...
- node.js 下依赖Express 实现post 4种方式提交参数
上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ...
- js如何使用正则表达式实现过滤HTML标签?(/<[^<>]+>/g)
js如何使用正则表达式实现过滤HTML标签?(/<[^<>]+>/g) 一.总结 js进阶正则表达式实现过滤HTML标签(<>标签中不能包含标签实现过滤HTML标签 ...
- npm 是node.js下带的一个包管理工具
npm 是node.js下带的一个包管理工具 npm install -g webpack webpack是一个打包工具 gulp是一个基于流的构建工具,相对其他构件工具来说,更简洁 ...
随机推荐
- 关于steam平台“wallpaper engine”软件出现界面黑屏,但壁纸能播放的问题
前阵子重装电脑后,在使用wallpaper engine这款软件时发现了以下令人疑惑的画面: 点击"设置"和"壁纸选择"界面全是黑的......这还没完,更气人 ...
- 为什么 @Value 可以获取配置中心的值?
hello,大家好,我是小黑,好久不见~~ 这是关于配置中心的系列文章,应该会分多篇发布,内容大致包括: 1.Spring 是如何实现 @Value 注入的 2.一个简易版配置中心的关键技术 3.开源 ...
- 攻克弹唱第九课(如何运用好G大调和弦)
在本期文章中,笔者将使用guitar pro7软件与大家分享如何运用好G大调音阶的经验. 众所周知,在我们学习吉他的过程中,先从C大调开始,再以G大调为深入,然后才走过入门的阶段.很多朋友都觉得自己对 ...
- FL Studio附加快捷面板讲解
在FL Studio功能面板中有一个类似于快捷面板功能的面板.你们看,它们连名字都很像,叫做附加快捷面板.该面板主要由撤销.另存为.转换为音频文件(导出).一键录音.查看工程信息和帮助.为了帮助大家知 ...
- 下载器Folx教程:智能标签怎么用?
Mac专用下载器Folx的智能标签中内置了图片标签,可以自动分类图片文件,但要如何分类GIF图片呢?其实,我们可以在Folx的标签面板创建动图标签,然后再创建标签专属的下载文件夹,来独立存放GIF格式 ...
- leetcode 108 和leetcode 109
//感想:有时候啊,对于一道题目,如果知道那个点在哪,就会非常简单,比如说这两题,将有序的数组转换为二叉搜索树, 有几个点: 1.二叉搜索树:对于某个节点,它的左节点小于它,它的右节点大于它,这是二叉 ...
- 【R语言入门】R语言中的变量与基本数据类型
说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...
- NDK&JNI开发总结
NDK&JNI开发总结 简介 附个不错的博客 https://www.jianshu.com/p/87ce6f565d37 在Android Framework中,需要提供一种媒介或 桥梁,将 ...
- OpenCV阈值处理函数threshold处理32位彩色图像的案例
☞ ░ 前往老猿Python博文目录 ░ 一.概述 openCV图像的阈值处理又称为二值化,之所以称为二值化,是它可以将一幅图转换为感兴趣的部分(前景)和不感兴趣的部分(背景).转换时,通常将某个值( ...
- PyQt(Python+Qt)学习随笔:QAbstractItemView的textElideMode属性
老猿Python博文目录 老猿Python博客地址 一.概述 textElideMode属性用于控制省略文本中省略号"-"的位置,当项的内容过多视图无法显示完整时会显示部分内容,并 ...