## 前言
* 正则表达式,对字符串进行模式匹配的工具对象。一般对象都有两种创建方式:
* 对象示例,通过new obj() 类似的方式
* 直接量语法,也就是直接赋值。var pattern=/^$/
备注:目前建议的是perl风格的正则表达式,简易易懂。
## 简单了解
### 标准语法
1. 创建的语法 :
new RegExp(pattern, attributes);
其中pattern代表匹配模式,arrtibutes代表匹配限制,匹配限制中有g,i,m,g代表执行全局匹配,i代表执行大小写不敏感的匹配,m代表多行匹配。
2. 举例
[A-z] 大写A到小写z之间的字符
[0-9]0-9之间的任意数字
[^avb] 不属于avb之间的字符
3. 正则对象的常用方法
reg.test(str) 返回布尔型数据 ,可以检测是否符合规则
4. 拓展:String对象对正则的使用
search(reg) ;match(reg),split(reg),replace(reg,str),etc...
### 正则对象语法
* 元字符,用来匹配的基本字符,直接量字符
![正则对象元字符](https://box.kancloud.cn/eb7463eed2393320b441980b793d31a3_842x320.png)
* 正则量词(出现次数)
![出现次数](https://box.kancloud.cn/2dd7b30a853144ae5031c58d8e4485c7_738x320.png)
* 选择 分组和引用
> | 选择 或者
> ()组合 将几个项组合为一个单元,这些单元可以通过数量修饰以及|连接
> (?:...)只组合,把项组合到一个单元,但不记忆与该组相匹配的字符。
> \n 和第n个分组第一次匹配的字符相匹配。
* 指定匹配位置与修饰符
> ?! 负向断言,当不符合前面的匹配时,后面的语句不在进行匹配。
> ^ 匹配的开始 $ 匹配的结束
> \b 单词的边界 \B 非单词的边界
> 修饰符
> i 执行不区分大小写的匹配
> g执行全局的匹配,找到所有的匹配,而不是找到一个后停止
> m 多行匹配模式
* 用于模式匹配的String 的方法
> search(patt) 返回第一个匹配的指针位置
> replace(patt) 吧复合匹配规则的字符串替换为规定的字符串
> match(patt) 返回匹配的字符串数组,如果没有返回null,如果设置了修饰符g则会返回所有的复合结果,否则返回第一个。返回的属性是index和input
> split(patt) 可以按照指定的模式划分
* 对象方法:
> * exec(str)与str.match(patt)有点类似,如果找不到返回null,如果能找到,返回一个数组。返回的第一个元素是与表达式匹配的字符串,余下的元素是与圆括号内的子表达式相匹配的子串。属性index包含了匹配发生的位置,属性input引用的是正在检索的字符串。与match不同的是,不管是否具有g属性修饰,返回的都是数组。
> * test(str) 返回布尔型,符合规范是true,不符合是false
>* patt1.compile(patt2),改变patt 的内容
* 常用的正则表达式枚举:
* /^[1][0-9]{10}$/ 11位的手机号,以1开始的
* /^[a-zA-Z0-9](([a-zA-Z0-9_\-\.]*[a-zA-Z0-9])*[@]([a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])*[\.])+)([a-zA-Z]{2,5})$/ 邮箱
* /^[0-9]{6}$/ 6位的数字验证码
* 姓名
* 身份证号
* 地址
* 密码
* 相关教程:
* [教程](http://deerchao.net/tutorials/regex/regex.htm)
* [常用正则](http://deerchao.net/tutorials/regex/common.htm)
* [在线测试正则工具]( http://tool.oschina.net/regex#)(不需要写双斜线)
- 前端入门
- 前端入职须知
- 前端自我定位
- pc与手机页面差别
- 前端书单
- 前端种子计划
- 前端技术栈
- ps
- ps入门阶段
- html
- html入门
- html代码规范
- meta
- table
- iframe
- a标签详解
- image
- html代码审查工具
- h5专题
- h5入门
- h5新增属性
- canvas画布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入门必学
- css代码规范
- 项目字体规范
- css基本位置布局
- css常见样式命名规则
- css代码优化建议
- css常用样式名
- css选择器攻略
- css盒子模型的理解
- css属性继承与默认值
- css代码审查工具
- css中常见的知识盲区
- css3新特性浅谈
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技术
- 文本两端对齐
- css之浮动解决方案
- css优化建议
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固宽&变宽布局
- 宽高固定比例的盒模型
- 样式预处理语言
- less教程
- sass教程
- postcss教程
- js
- javascript入门
- js代码规范
- js基础拓展
- js代码审查工具
- js性能优化
- js基本语句
- 基本运算
- 基本语句语法
- js对象
- es6入门
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入门
- jq核心思想
- jq基本语法
- jq插件库汇总
- js常用技术
- break&continue区别
- js对日期转换
- js控制运动-move.js
- 原生js-cookie语法
- ajax请求后回调
- 表单数据序列化
- zepto
- zepto入门
- 百度touchjs
- js编程
- 插件库
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互组件
- layerjs
- java
- java入门
- java基本语句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入门
- git教程
- git入门
- git分支
- git-tag管理
- git注意事项
- git-torise入门
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容适配文档
- pc端兼容bug汇总
- ie兼容bug汇总
- 手机兼容bug汇总
- web安全
- jeecms
- web存储
- app/h5组件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域问题
- markdown教程
- 常用工具
- postman-api调试
- web常识
- 浏览器ua统计
- ui框架
- easyui
- bootstrap
- 入门推荐
- weui
- sui-pc
- sui-mobile
- layerUi